javascript - 单击指令 ng-repeat 项时如何切换 ng-class

标签 javascript angularjs directive ng-class

我用我当前的代码创建了一个 plunker .. plunker

当单击每个项目上的一个按钮时,我希望“li”元素选择该类(即将其背景更改为灰色。如果单击另一个元素,我希望将前一个项目选择的类设为删除并添加到单击的项目。所以基本上是类的切换..)

我已经尝试通过使用 $index 来实现它:

    $scope.isClicked = function(index){
             $scope.selected = index;
           };

并在 items.tpl.html 中切换它:

 <li class="item" ng-class"{selected: index===selected}">

我在这里做错了什么?有人可以帮忙吗...

最佳答案

参见 fork plnkr

简而言之,您正在使用ng-repeat作为指令user-group-item。对于每个重复的user-group-item(本例中为2),该指令将进行自己的作用域和 Controller 方法初始化。因此,您不能在指令内使用 $scope.selected 来存储所选内容,因为每个 user-group-item 都会有自己的 selected$scope 中的变量

您需要将所选状态存储在指令之外,即主 Controller 中。我在主 Controller 中创建了一个函数 setSelected ,并在指令中使用 & 将其作为方法引用传递。在 $scope.isClicked 方法中,您需要引用父作用域来获取函数 setSelected

关于javascript - 单击指令 ng-repeat 项时如何切换 ng-class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44657345/

相关文章:

javascript - 防止 `ng-include` 创建隔离作用域。 AngularJS

javascript - Selenium 网络驱动程序可以访问 javascript 全局变量吗?

javascript - AngularJS 1.2 跨源请求仅支持 HTTP

javascript - 为什么 Angular JS 中从 ng-controller 传递的值是空白

javascript - Angular : What is the best way to bind to a global event in a directive

javascript - 使用 AngularJS 指令、工厂和 ng-repeat 动态更改内容

php - 通过 Javascript 中的变量按名称访问 PHP 生成的单选按钮

javascript - 如何在javascript中处理多次返回

javascript - Fancytree:如何获取复杂表中的输入值?

javascript - $scopeProvider 的问题