angularJS处理table中checkbox的选中状态

本文介绍了一个使用AngularJS实现表格中全选与反选功能的示例,通过监听主复选框和子复选框的状态,实现全选、反选以及部分选择的功能。文章提供了完整的HTML和AngularJS代码,展示了如何使用AngularJS的ng-model、ng-repeat和自定义函数来控制复选框的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!DOCTYPE html>
<html>

<head>     
    <meta charset="UTF-8">
    <title></title>
    <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>

<body>
         
     <div ng-app='myApp' ng-controller='myCtrl'>
        <div class="container">
            <div class="row">
                <div class='col-md-10'>
                    <table class="table table-bordered">
                        <thead>
                            <tr>
                                <th>
                                    <input type="checkbox" ng-model='masterChecked' ng-click='checkMaster()' />
                                </th>
                                <th>id</th>
                                <td>name</td>
                                <td>age</td>
                            </tr>
                        </thead>
                        <tbody>
                            <tr ng-repeat="item in personList">
                                <td>
                                    <input type="checkbox" ng-checked='item.checked' ng-click='checkChild(item)' />
                                </td>
                                <td>{{item.id}}</td>
                                <td>{{item.name}}</td>
                                <td>{{item.age}}</td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>

            
    <script>
        var myApp = angular.module('myApp', []);
        myApp.controller('myCtrl', function ($scope) {
            //初始化表格数据
            $scope.personList = [{
                checked: true,
                id: 1,
                name: '赵云',
                age: 50
            }, {
                checked: true,
                id: 2,
                name: '曹操',
                age: 60
            }, {
                checked: true,
                id: 3,
                name: '大司马',
                age: 50
            }];
            $scope.masterChecked = true
            //主复选框选中事件
            $scope.checkMaster = function () {
                if ($scope.masterChecked == true) {
                    angular.forEach($scope.personList, function (item, index) {
                        item.checked = true;
                    });
                } else {
                    angular.forEach($scope.personList, function (item, index) {
                        item.checked = false;
                    });
                }
            }
            //子复选框选中事件
            $scope.checkChild = function (item) {
                //根据选中状态,调正v.checked值
                (item.checked == false) ? item.checked = true : item.checked = false;
                //若取消选中,则取消主复选框选中
                if (item.checked == false) {
                    $scope.masterChecked = false;
                } else {
                    //若选中,判断主复选框是否需要选中
                    var temp = true;
                    angular.forEach($scope.personList, function (item, index) {
                        //若子复选框有一个未选中,则主复选框不必选中
                        if (item.checked == false) {
                            temp = false;
                        }
                    });
                    //若子复选框全部选中,则选中主复选框
                    $scope.masterChecked = temp;
                }
            }
        });

    </script>
</body>

</html>

 

贴上效果图:

 

贴上源码:

 

备注:没有注释,抱歉今天还是一个不擅长做一个注释的小可爱.......

转载于:https://www.cnblogs.com/DZzzz/p/10994091.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值