我有一个这样的清单。它是预先渲染的,因此无法使用与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对象。这可能吗?
答案 0 :(得分: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或一次性代码。
查理