-1

このようなリストがあります。これは事前にレンダリングされているため、ng-repeat に添付されているものを使用することはできません。

<li ng-class="{ 'active': 1 == selectedIndex }">
    <a href="" ng-clicked="itemClicked($event)">Item 1</a>
</li>

がクリックされた<li>ときにクラスを切り替えられるようにしたい。a

$indexここで同様の質問に対する他の回答を見ると、変数を使用してこれを達成できることを意味する ng-repeat に関連付けられた変数があるようです。このリストは事前にレンダリングされているため、これは利用できないため、jQuery の方法で行う必要があると思います。

$event オブジェクトにアクセスできることがわかりましたが、event.target は DOM 要素しか提供しません。それを jQuery オブジェクトに変換できるようにしたいと考えています。これは可能ですか?

4

1 に答える 1

1

これについては、通常とは異なる方法で考える必要があります。普通の古い jquery のように、angular 内で DOM を変更することはできません。これがあなたがすべきことです:

<li ng-class="{ active: selectedItem == item }" ng-repeat="item in list">
   <a href="javascript://" ng-clicked="itemSelected( item )">{{ item.name }}</a>
</li>

次に、コントローラーで:

$scope.selectedItem = null; // if this is loaded from a service then you can set it after it loads.
$scope.itemSelected = function( item ) {
   $scope.selectedItem = item;
}

インデックス、jquery、または 1 回限りのコードをいじる必要はありません。

チャーリー

于 2013-07-29T21:35:10.603 に答える