在复选框上使用ng-repeat循环

4
  <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> 

在我的控制器中,

$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);

         }
    }

我已经正确获取了颜色选择的值。但是,如果我选择一个复选框,它只会显示所有复选框都被选中(也就是说,在所有复选框中都出现了勾选标记,但实际上只有在颜色选择数组中选择的复选框ID被选中)。如果我选择其他复选框,则所有勾选标记都将消失。请帮我解决这个问题。

3个回答

1

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

colors[id].checked是错误的,因为您引用了相同的id(也许s.id colors[s.id].checked 是您想要的)。所以如果您在控制器中有$scope.id = 2,那么您总是引用colors[2].checked


0

ng-repeat="s in colors"foreach(s in colors)类似。因此,如果您想要访问colors中的值,则需要使用"S"代替colors。


0

试试这个

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接