AngularJS 實現複選框 全選/取消全選

來源:互聯網
上載者:User

之前在百度上找了很多關於用AngularJS實現checkbox全選的功能,但是都只能完成部分功能,下面將需要的功能列出如下:

1、將所有請選擇向的checkbox都選中時,上面的全選也選中。

2、如有一個沒有選中,全選取消。

3、點擊查看按鈕,查看選中的名字有哪些。

在網上找了很多資料,發現很多的都是只能實現前面2個功能,而且還有一點複雜,最後在API上查了一下用ngChecked這個指令可以很輕鬆的實現這個功能。代碼如下

html:

<div ng-controller = 'myCtrl'>    <button ng-click="checkStatus()">查看</button>    <input type = "checkbox" ng-model="selectAll" ng-checked="select" ng-click="changeAll()"/>全選/取消全選 <br/>    <table width="50%">      <thead>        <tr>          <th>請選擇</th>          <th>姓名</th>          <th>生日</th>        </tr>      </thead>      <tbody>      <tr ng-repeat="obj in list">        <td>          <input type = "checkbox" ng-checked="selectAll" ng-click="funcChange()" ng-model="obj.isSelected"/>        </td>        <td>{{obj.name}}</td>        <td>{{obj.birthday}}</td>      </tr>      </tbody>    </table>  </div>
js:
<script>    var app = angular.module("myApp", ['ng']);    app.controller('myCtrl', function ($scope) {      $scope.list = [        {name:'Golde',birthday:'2000-01-10',isSelected:false},        {name:'King',birthday:'1990-01-10',isSelected:false},        {name:'Mark',birthday:'19890-01-10',isSelected:false},        {name:'Marie',birthday:'2010-01-10',isSelected:false}      ];      $scope.checkStatus = function(){        var str = '';        angular.forEach($scope.list,function(value,key){          if(value.isSelected){            str += value.name+"被選中了\n";          }        });        if(str === ''){          str = '都未選中';        }        alert(str);      };//      對於對象進行操作的時候(點擊),會執行funcChange//      判斷對象數組中isSelected 是否為 true或false,在決定select是否為true      $scope.changeAll = function(){//全選/取消全選        angular.forEach($scope.list,function(v,k){          v.isSelected = $scope.selectAll;        })      };      $scope.funcChange = function(){// 當所有都選中時        $scope.select = true;        angular.forEach($scope.list,function(v,k){          $scope.select = $scope.select && v.isSelected;        });      };    });  </script>
大家可以試試用這個方法。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.