1

どちらかを選択する必要がある 2 つの画像があり、 を使用してどちらを選択するかによってクラスが変わりますng-click。次のステップに進むにあたり、オブジェクトを作成し、選択したものへの参照を保存します。

$scope.cabinetDetails.cabinetType = {
    name: $scope.currentElement.obj.name,
    image: $scope.currentElement.obj.image,
    ref: $scope.currentElement
};

$scope.currentElementは私が選択した画像であり、後で次の方法でアクセスできると思います。$scope.cabinetDetails.cabinetType.ref

私はステップ 2 にいて、ステップ 1 に変更を加えたいとしましょう。ブレッドクラムをクリックして戻ると、ステップ 1 が再び表示されます (これは問題なく動作します)。私がしたいのは、クラスが選択された状態に変わることです。

ステップ1のロード時に、私はこれを行います:

if ($scope.cabinetDetails.cabinetType != null)
{
    $scope.currentElement = $scope.cabinetDetails.cabinetType.ref;
}

私の部分ng-repeatで簡単なチェックを行うため、これにより以前に持っていた画像が事前に選択されると思います。ng-class

<div ng-repeat="obj in currentObject">
    <div class="img-select" ng-click="setActive(this)" ng-class="{itemSelected : isActive(this)}">
      <div align="center">
        <img ng-src="resources/images/aventos/{{obj.image}}" />
      </div>
      <div class="img-title">{{obj.name}}</div>
    </div>
</div>

isActive()関数もかなり単純です。

$scope.isActive = function(element)
{
    return $scope.currentElement === element;
}

質問の投稿を避けようとしてきましたが、これを理解できないようです。私の参照が無効のようです

4

2 に答える 2

2

1 つの問題は、HTML テンプレートに見られるのはthis、複数のメソッドでの使用です。thisの現在のスコープ オブジェクトを参照しますng-repeat

配列を反復処理していると仮定すると、この行を変更できますか

<div class="img-select" ng-click="setActive(this)" ng-class="{itemSelected : isActive(this)}">

<div class="img-select" ng-click="setActive(obj)" ng-class="{itemSelected : isActive(obj)}">

また、メソッドをデバッグして、メソッドsetActiveisActiveがスコープ インスタンスではなくオブジェクトで動作していることを確認します。

于 2013-08-20T03:26:07.043 に答える
1

問題はthisキーワードにあります。thisテンプレートからパススルーすることはできません。

要素を参照する代わりに、一歩下がって、リピーターの基礎となるアイテムを参照してください。(内のオブジェクト) に変更してみてthisくださいobjng-repeat="obj in currentObject"

ng-click="setActive(obj)" ng-class="{itemSelected : isActive(obj)}
于 2013-08-20T03:25:49.287 に答える