我在我的应用中有这个:
<li ng-repeat="name in tabs track by $index" ng-class="{selected: tab==$index}" ng-click="tab = $index">{{name}}</li>
并且它不起作用,当我点击该项目时启用选定的类(我点击的每个li都有这个类,当我点击其他li时它没有删除)并且tab没有更新,它在我使用它时工作:
<li ng-repeat="name in tabs track by $index" ng-class="{selected: tab==$index}" ng-click="switchTab($index)">{{name}}</li>
scope.switchTab = function(index) {
scope.tab = index;
};
为什么会发生这种情况,为什么ng-click="tab = $index"
不起作用?
答案 0 :(得分:5)
你有一个错字,改为:
scope.switchTab = function(index) {
scope.tab = index;
};
即使您的函数中的参数为$index
,您也使用了index
。
修改强>
它使用函数而不是直接赋值的原因是ng-repeat
创建了一个新范围。当你这样做时:
tab = $index
您在新范围内创建了一个新变量,而不是更新您认为的$scope
上的变量。
有关详细信息,请参阅this question。