-1

我有一个这样的清单。它是预渲染的,因此不能使用附加到 ng-repeat 的任何内容。

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

我希望能够在单击<li>时切换类a

在这里查看类似问题的其他一些答案,似乎有一个与 ng-repeat 关联的变量,这意味着您可以使用一个$index变量来实现这一点。由于此列表是预渲染的,因此不可用,因此我想我必须以 jQuery 方式进行。

我看到我可以访问 $event 对象,但 event.target 只给了我 DOM 元素,我希望能够将它转换为 jQuery 对象。这可能吗?

4

1 回答 1

1

您必须以与通常情况不同的方式来考虑这一点。您不能像使用普通的旧 jquery 那样在角度内修改 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 或一次性代码。

查理

于 2013-07-29T21:35:10.603 回答