<!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>
貼上效果圖:
貼上源碼:
備注:沒有注釋,抱歉今天還是一個不擅長做一個注釋的小可愛.......