以下是一个使用AngularJS实现检查/取消检查类别和列表项的复选框的示例代码:
HTML代码:
选择类别:
-
-
选择列表项:
-
JavaScript代码:
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.categories = [
{ name: '类别1', checked: false },
{ name: '类别2', checked: false },
{ name: '类别3', checked: false }
];
$scope.items = [
{ name: '项1', category: $scope.categories[0], checked: false },
{ name: '项2', category: $scope.categories[0], checked: false },
{ name: '项3', category: $scope.categories[1], checked: false },
{ name: '项4', category: $scope.categories[2], checked: false }
];
$scope.selectAll = false;
$scope.toggleAll = function() {
angular.forEach($scope.categories, function(category) {
category.checked = $scope.selectAll;
});
};
$scope.toggleCategory = function() {
$scope.selectAll = ($scope.categories.filter(function(category) {
return !category.checked;
}).length === 0);
};
$scope.toggleItem = function() {
var checkedItems = $scope.items.filter(function(item) {
return item.checked;
});
var category = checkedItems.length > 0 ? checkedItems[0].category : null;
angular.forEach($scope.categories, function(category) {
category.checked = category === category;
});
};
});
在这个示例中,我们使用ng-repeat
指令来动态地生成类别和列表项的复选框。ng-model
指令用于绑定复选框的状态,ng-change
指令用于在复选框状态改变时调用相应的函数。
toggleAll
函数用于控制全选复选框的状态,它会遍历所有类别并将它们的checked
属性设置为与全选复选框相同的值。
toggleCategory
函数用于控制类别复选框的状态,它会检查是否有任何未选中的类别,如果没有,则将全选复选框的状态设置为选中。
toggleItem
函数用于控制列表项复选框的状态,它会检查选中的列表项所属的类别,并将该类别的复选框状态设置为选中。
这样,当选择类别的复选框或列表项的复选框时,它们的状态将相应地更新。