angularjs - 仅更改 ngRepeat 中一个元素的类

标签 angularjs angularjs-ng-repeat angularjs-ng-click

我有一个 ng-repeat。我想更改该元素的类与整个组的类。

<button ng-class="defaultClass" ng-repeat="tube in node.Tubes" ng-click="toggleBtn(tube)">{{"Tube " + ($index + 1)}}</button>

在我的 ng-click 上使用上述 HTML,我可以通过管道,它实际上只提供从 API 传递的数据,如果我 console.log(this) 我在名为 $$watchers 的元素中看到类名,但从那里更改它似乎很奇怪。

$scope.toggleBtn = function (element) {
    console.log(element);
    console.log(this);
}

在我的 Controller 中,我有 $scope.defaultClass = "btn btn-off"; 但如果我使用该函数更改它,它会更改每个元素。

如何只更改单击的元素的类?

最佳答案

继续评论。您不能为此使用 $scope 变量,因为正如您所说,它将是相同的。要解决这个问题,你需要正确使用 ng-class 。 文件:https://docs.angularjs.org/api/ng/directive/ngClass (请参阅页面底部的示例)

<button ng-class="{'btn-on' : tube.toggled, 'btn-off' : !tube.toggled}" ng-repeat="tube in node.Tubes" ng-click="toggleBtn(tube)">{{"Tube " + ($index + 1)}}</button>

http://plnkr.co/edit/WKLJ45yRYu1583C2ZnfT?p=preview

关于angularjs - 仅更改 ngRepeat 中一个元素的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27151868/

相关文章:

javascript - 仅在 Angular Js 中获取单击按钮的 ID

javascript - 如何在 AngularJS ng-click 触发器之前设置超时

javascript - 发生状态更改时不应用 ng-class

javascript - ng-disabled 具有更改时触发的功能

AngularJS + TinyMCE : ng-maxlength is not working on &lt;textarea&gt;

javascript - AngularJs Bootsrap typeahead 自动填充输入框悬停在下拉选项上

javascript - 是否可以在注释样式中使用预定义的 angularjs 指令,例如 ng-repeat。?

javascript - 如何双重嵌套 Angular ng-repeat

javascript - 我无法使用 AngularJS 读取在 PHP 中创建的 Cookie

javascript - AngularJS - 无法使用指令引用 ng-model 内的 $index