<span ng-repeat="s in colors">
<p><li><input type="checkbox" ng-model="colors[id].checked" ng-change="setColor(s.id)"> {{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/