javascript - 复选框上的 ng-repeat 循环

标签 javascript jquery angularjs checkbox

  <span  ng-repeat="s  in colors">
         <p><li><input type="checkbox"   ng-model="colors[id].checked"   ng-change="setColor(s.id)"> &nbsp; {{s.name}}</li></p> 
</span> 

在我的 Controller 中,

$scope.colorsel= []; 
    $scope.setColor = function(a){
         if($scope.colorsel.indexOf(a) == -1 ){
              $scope.colorsel.push(a);
         }
         else{
             var index =  $scope.colorsel.indexOf(a)
            $scope.colorsel.splice(index,1);

         }
    }

正在正确获取颜色值。但是如果我选择一个复选框,它只是显示所有复选框都被选中(意味着勾号出现在所有复选框中但它只采用在 colorsel 数组中选中的复选框的 id)。如果我选择另一个,所有刻度线都会消失。请帮我解决这个问题。

最佳答案

直接引用对象:ng-model="s.checked"

这:colors[id].checked 是错误的,因为您引用了相同的 id(可能是 s.id colors [s.id].checked 是你正在尝试的)。因此,如果您的 Controller 中有 $scope.id = 2,那么您总是引用 colors[2].checked

关于javascript - 复选框上的 ng-repeat 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37077338/

相关文章:

javascript - 从 Javascript 中的正则表达式匹配中排除单词数组

javascript - 如何添加第二条 JSON 消息?

jquery - 如何在调用隐藏div时启动jquery动画?

javascript - 为什么我的 AngularJS Controller 定义和标记没有按预期工作? - <controller> 不是函数错误

javascript - AngularJS 从指令内的祖先范围调用方法

javascript - 如何在 iframe 标签中插入 javascript 代码

javascript - 所有圆形元素都相互卡住

javascript - jquery 复选框监听器 for 循环

javascript - 防止回发 - jquery/javascript

html - Angular JS : updating object values in scope after the backend call