Angularjs 角度材质复选框-将功能添加到ng选中
我正在使用Angular Material提供的Angularjs 角度材质复选框-将功能添加到ng选中,angularjs,checkbox,angular-material,angularjs-ng-change,Angularjs,Checkbox,Angular Material,Angularjs Ng Change,我正在使用Angular Material提供的和“不确定”属性来根据选中的复选框更新数组。但是,阵列仅根据ng click而不是ng change进行更新。因此,选中“全选”项不会将值插入数组 想想这个 如何根据ng更改更新addData功能 ng change确实需要ng model,但实际上本例只需要一个模型 你有3个数组基本上保存着相同的项目,你只需要一个就可以了 在每个项目上添加选定的属性,并将其用作模型 使用筛选选定的项上的数组 控制器: controller('AppCtrl'
和“不确定”属性来根据选中的复选框更新数组。但是,阵列仅根据ng click而不是ng change进行更新。因此,选中“全选”项不会将值插入数组
想想这个
如何根据ng更改更新addData功能
ng change
确实需要ng model
,但实际上本例只需要一个模型
- 你有3个数组基本上保存着相同的项目,你只需要一个就可以了
- 在每个项目上添加
选定的属性,并将其用作模型
- 使用筛选选定的
项上的数组
控制器:
controller('AppCtrl', function($scope, $filter) {
$scope.items = [{num: 1},{num: 2}, {num: 3}, {num: 4},{num: 5}];
$scope.isIndeterminate = function() {
var selected = $filter('filter')($scope.items, {selected: true}).length;
console.log(selected);
return selected !== 0 && selected !== $scope.items.length;
};
$scope.allChecked = function() {
return $filter('filter')($scope.items, {selected: true}).length === $scope.items.length;
};
$scope.toggleAll = function() {
var selected = $filter('filter')($scope.items, {selected: true}).length;
var newSelected = selected < $scope.items.length;
angular.forEach($scope.items, function(item) {
item.selected = newSelected;
});
};
});
控制器('AppCtrl',函数($scope,$filter){
$scope.items=[{num:1},{num:2},{num:3},{num:4},{num:5}];
$scope.isIndeterminate=函数(){
var selected=$filter('filter')($scope.items,{selected:true});
console.log(选中);
返回所选!==0&&selected!=$scope.items.length;
};
$scope.allChecked=函数(){
返回$filter('filter')($scope.items,{selected:true});
};
$scope.toggleAll=function(){
var selected=$filter('filter')($scope.items,{selected:true});
var newSelected=所选<$scope.items.length;
angular.forEach($scope.items,function(item){
item.selected=newSelected;
});
};
});
标记:
<div>
<fieldset class="demo-fieldset">
<legend class="demo-legend">Using
<md-checkbox> with the 'indeterminate' attribute </legend>
<div layout="row" layout-wrap="" flex="">
<div flex-xs="" flex="50">
<md-checkbox aria-label="Select All" md-indeterminate="isIndeterminate()" ng-click="toggleAll()" ng-checked="allChecked()">
<span ng-if="isChecked()">Un-</span>Select All
</md-checkbox>
</div>
<div class="demo-select-all-checkboxes" flex="100" ng-repeat="item in items">
<md-checkbox ng-model="item.selected">
{{ item.num }}
</md-checkbox>
</div>
</div>
</fieldset>
<div ng-repeat="data in items | filter: {selected: true}" style="display: inline-block">
{{data.num}},
</div>
</div>
使用
具有“不确定”属性
取消全选
{{item.num}
{{data.num}},
改编代码笔:
按评论编辑:谢谢,这是对所问问题的正确答案。然而,今天,客户改变了他们的要求,希望根据一个复选框选择几个项目。考虑他们想要的是,当你选择“蔬菜”时,下面的列表将显示“胡萝卜、黄瓜、土豆”等。可以用同样的方法吗?