ng-click =“tab = $ index”不起作用

时间:2017-01-10 11:03:15

标签: javascript angularjs

我在我的应用中有这个:

<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"不起作用?

1 个答案:

答案 0 :(得分:5)

你有一个错字,改为:

scope.switchTab = function(index) {
  scope.tab = index;
};

即使您的函数中的参数为$index,您也使用了index

修改 它使用函数而不是直接赋值的原因是ng-repeat创建了一个新范围。当你这样做时: tab = $index您在新范围内创建了一个新变量,而不是更新您认为的$scope上的变量。

有关详细信息,请参阅this question