我在使用ng-checked和ng-disable时遇到ng-repeat问题
<div ng-repeat="module in modulelist>
<input id="switch{{$index}}" ng-init="setState($index);" type="checkbox" ng-checked="switch.checked" ng-disabled="switch.disable" ng-click="toggle($index,light.name)" />
我正在使用ng-init从模块列表中加载复选框module.status
的状态,状态可以是ON,OFF或未知,对于未知我想要禁用cb,对于ON / OFF我想要检查/取消选中cb。我尝试使用
$scope.switch={checked:true};
但它正在将该属性应用于所有复选框 我知道&#39; switch.checked&#39; /&#39; switch.disable&#39;每个CB应该是唯一的,以做出独特的改变,但我无法做到。
请帮助
答案 0 :(得分:0)
这看起来像你需要的。每个模块都是输入的模型,因此您可以为这些属性使用逻辑。
<div ng-repeat="module in modulelist>
<input id="switch{{$index}}"
ng-init="setState($index);" type="checkbox"
ng-checked="module.status==='ON'"
ng-disabled="module.status==='unknown'"
ng-click="toggle($index,light.name)" />
使用下面的代码对所有复选框使用相同的范围变量,这就是为什么更改一个将全部更改它们。
$scope.switch={checked:true};
回应OP的评论,如下:
ng-checked="handleCheckStatus(module.status)"
然后在$scope
:
$scope.handleCheckStatus = function(status) {
switch (status) {
case 'ON':
return true;
break;
case 'OFF':
return false;
break;
// and so on
}
}