【问题标题】:ng-click="tab = $index" don't work in angularng-click="tab = $index" 不能在角度工作
【发布时间】:2017-01-10 11:03:14
【问题描述】:

我的应用中有这个:

<li ng-repeat="name in tabs track by $index" ng-class="{selected: tab==$index}" ng-click="tab = $index">{{name}}</li>

它不起作用,当我点击该项目时,选定的类被启用(我点击的每个 li 都有这个类,当我点击其他 li 时它不会被删除)并且选项卡没有更新,当我使用它时它工作:

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

【问题讨论】:

  • 你能在控制器函数中获得index 参数吗?
  • @DhavalMarthak 这是一个错字,应该是scope.tab = index;

标签: javascript angularjs


【解决方案1】:

你有错别字,改成:

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

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

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

请参阅this question 了解更多详细信息。

【讨论】:

  • 我添加代码时是一个错字,问题是为什么ng-click="tab = $index" 不起作用,switchTab 起作用了。
猜你喜欢
  • 2017-05-12
  • 2015-01-15
  • 2017-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多