AngularJS的独家选项

时间:2014-02-27 02:51:40

标签: angularjs

我有一个复选框列表,其中一个复选框的值为ALL。每当选中ALL时,复选框的其他选项将被禁用并取消选中(值为空)。我应该如何在AngularJS中做到这一点?通过在数据列表上使用循环生成复选框列表,如下所示:

<div ng-repeat="item in moduleService.elements">
    <input type="checkbox">{{item.value}}
</div>

3 个答案:

答案 0 :(得分:1)

你可以这样做:

HTML:

<div ng-repeat="item in moduleService.elements">
    <input id="{{'checkbox' + $index}}" type="checkbox" ng-disabled="allChecked" ng-model="item.isChecked">
    <label for="{{'checkbox' + $index}}">{{item.value}}</label>
</div>
<div>
    <input id="allCheckbox" type="checkbox" ng-model="allChecked" ng-click="onAllClicked()">
    <label for="allCheckbox">All</label>
</div>

控制器:

var myCtrl = function(moduleService, $scope) {
    $scope.onAllClicked = function() {
        if(!$scope.allChecked) {
            for (var i = 0; i < moduleService.elements.length; i++) {
                moduleService.elements[i].isChecked = false;
            }
        }
    }
}

这是一个带有类似代码的JSFiddle:http://jsfiddle.net/robianmcd/W3xeP/

答案 1 :(得分:1)

你可以使用ng-checked,它会让它变得性感。

<input type="checkbox" id="masterCheckbox" ng-model="master">

<div ng-repeat="item in moduleService.elements">
    <input type="checkbox" ng-checked="master">{{item.value}}
</div>

美观,简单,干净。查看JSFiddle

答案 2 :(得分:0)

你还需要使用Zack的答案来禁用ng

<input type="checkbox" id="masterCheckbox" ng-model="master">

<div ng-repeat="item in moduleService.elements">
    <input type="checkbox" ng-disabled="master" ng-checked="master">{{item.value}}
</div>
相关问题