ng-click ="tab = $ index"不起作用

jcu*_*bic 0 javascript angularjs

我在我的应用程序中有这个:

<li ng-repeat="name in tabs track by $index" ng-class="{selected: tab==$index}" ng-click="tab = $index">{{name}}</li>
Run Code Online (Sandbox Code Playgroud)

当它点击该项目时,选中的类被启用(我点击的每个单词都有这个类,当我点击其他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;
};
Run Code Online (Sandbox Code Playgroud)

为什么会这样,为什么ng-click="tab = $index"不工作?

Omr*_*ron 5

你有一个错字,改为:

scope.switchTab = function(index) {
  scope.tab = index;
};
Run Code Online (Sandbox Code Playgroud)

你以前$index即使在你的函数参数是index.

编辑: 它使用函数而不是直接赋值的原因是ng-repeat创建一个新范围.执行此操作时: tab = $index在新范围上创建新变量,而不是根据$scope您的想法更新该变量.

有关更深入的信息,请参阅此问题.