如何在ng-repeat中使用ng-checked和ng-disabled

时间:2016-05-11 04:12:14

标签: javascript angularjs checkbox angularjs-scope

我在使用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应该是唯一的,以做出独特的改变,但我无法做到。

请帮助

1 个答案:

答案 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
   }
}