AngularJS 的全选、反选实现
AngularJS 的全选、反选实现
一、需求
- 要使用 AngularJS 实现 checkbox 的全选、反选。
- 其中所有项都选中,则全选的 checkbox 也选中。
- 有一项没有选中,全选的 checkbox 不选中。
- 点击反选按钮,所有项反选,全选的checkbox 视情况而定,如果再所有项都没有选中的情况下反选等同于全选。
二、思路
- 需要获取全选 checkobx 的选中状态。
- 需要获取每个项 checkbox 的状态。
- 需要获取所有选中的 checkbox 的ng-model。
- 需要获取所有选项的数量。(用于和 3 进行比较,来判断是否全部选中)
- 需要获取反选按钮的状态,然后所有选中的 checkbox 的 ng-model 置反。
三、实现
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>全选与反选Demo</title>
<script src="js/angular.min.js"></script>
<script src="js/index.js"></script>
</head>
<body ng-app="demo" ng-controller="indexController" >
<ul>
<li><input type="checkbox" ng-model="sellect_all" ng-click="selectAll($event, list)">全选 <input type="button" ng-model="invert_all" ng-click="invertAll($event, list)" value="反选"></li>
<li ng-repeat="entity in list">
<input type="checkbox" ng-model="select_one[entity.id]" ng-click="selectOne($event,entity.id, list)">{{entity.value}}
</li>
</ul>
</body>
</html>
index.js
var app = angular.module('demo',[]); app.controller("indexController",function($scope){
// 自定义数据列表
$scope.list = [{"id": "1","value": "a"},{"id": "2","value": "b"},
{"id": "3","value": "c"},{"id": "4","value": "d"},
{"id": "5","value": "e"}]; $scope.selectIds=[];// 选中的ID集合
$scope.select_one=[]; // 单项是否选中状态集合,以 [{"1":true}...] 的方式存在,实际开发中,id 可能不是数字
$scope.sellect_all = false; // 全选按钮是否选中
$scope.invert_all = false; // 反选按钮是否选中 // 全选功能
$scope.selectAll = function($event, list) {
// 因为绑定的 sellect_all 有滞后,所以让其等于 $event.target.checked
$scope.sellect_all = $event.target.checked; if ($scope.sellect_all) {
angular.forEach(list, function(value) {
$scope.selectIds.push(value.id);
$scope.select_one[value.id] = true;
})
} else {
// 实现全不选功能
$scope.selectIds=[];
$scope.select_one=[];
}
} // 反选功能
$scope.invertAll = function($event, list) {
$scope.invert_all = $event.target.checked;
// 实现反选功能
$scope.selectIds=[];
angular.forEach(list, function(value) {
$scope.select_one[value.id] = !$scope.select_one[value.id];
if ($scope.select_one[value.id]) {
$scope.selectIds.push(value.id);
}
})
checkAll();
} // 单项checkbox选择功能
$scope.selectOne = function($event, id, list) {
if($event.target.checked){//如果是被选中,则增加到数组
$scope.selectIds.push( id);
}else{
var idx = $scope.selectIds.indexOf(id);
$scope.selectIds.splice(idx, 1);//删除
}
checkAll();
} // 检查是否全选
checkAll = function() {
// 如果按钮已全部被选,就使全选按钮选中,之所以进行非0判断,是考虑到了在实际环境中数据是服务器响应的。
if ($scope.selectIds.length != 0 && $scope.list.length == $scope.selectIds.length) {
$scope.sellect_all = true;
} else {
// 如果有的按钮没有被选中,就取消全选
$scope.sellect_all = false;
}
}
});
实现效果



AngularJS 的全选、反选实现的更多相关文章
- JavaScript、全选反选-课堂笔记
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 关于input全选反选恶心的异常情况
上一篇讲到:第一次点击全选按钮input显示对勾,第二次则不显示,需要用prop来添加checked属性. 但是用prop会出现一个问题,对勾显示,而checked属性不会被添加(比如:$(" ...
- jQuery全选/反选checkbox
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- python: jquery实现全选 反选 取消
引入这个jquery-1.12.4.js jquery实现全选 反选 取消 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitio ...
- BootStrapt iCheck表单美化插件使用方法详解(含参数、事件等) 全选 反选
特色: 1.在不同浏览器(包括ie6+)和设备上都有相同的表现 — 包括 桌面和移动设备 2.支持触摸设备 — iOS.Android.BlackBerry.Windows Phone等系统 4.方便 ...
- 用javascript实现全选/反选组件
以下是本人制作的全选/反选 组件,供广大同行参考.指正: 效果如图: 在实现的过程中,全选和全部取消选中这两个功能较为简单,只需用for循环遍历所有复选框为true或false即可.反选也较为简单,也 ...
- jquery、js操作checkbox全选反选
全选反选checkbox在实际应用中比较常见,本文有个不错的示例,大家可以参考下 操作checkbox,全选反选//全选 function checkAll() { $('input[name=&qu ...
- jquery、js全选反选checkbox
操作checkbox,全选反选 //全选 function checkAll() { $('input[name="TheID"]').attr("checked&quo ...
- Dom操作--全选反选
我们经常会在网站上遇到一些多选的情况,下面我就来说说使用Dom写全选反选的思路. 全选思路:首先,我们来分析一下知道,当我们点击"全选"复选框的时候,所有的复选框应该都被选中,那我 ...
随机推荐
- rabbitMq 学习笔记(一)
消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题 实现高性能,高可用,可伸缩和最终一致性架构. RabbitMQ 是采用 Erlang 语言实现 AMQP (Adva ...
- BUAA-OO-2019 第四单元总结
UML作业架构设计 这一单元的作业本质上是对数据之间的联系进行解析,并重新建立数据结构以方便查询的工作,这就要求我们了解各种UmlElement的结构以及他们之间的关系是如何组织的. 第十三次作业 在 ...
- 理解AMD ,CMD,CommonJS规范
https://blog.csdn.net/xcymorningsun/article/details/52709608 理解AMD ,CMD,CommonJS规范 2016年09月30日 10:33 ...
- 《Android开发艺术探索》读书笔记之Activity的生命周期
两种不同情况下的Activity生命周期 (1)典型情况下的生命周期 指在有用户参与的情况下,Activity所经过的生命周期的改变. (2)异常情况下的生命周期 指Activity被系统回收或者由于 ...
- SAP常见查询组合
做SAP开发的,SELECT是必不可少的.新语法出了不少'新鲜'的语法,用法也是五花八门. 新语法有新语法的好处,老语法有老语法的优势. 新语法里把很多的逻辑处理,分组,排重,内表处理全都放到一些关键 ...
- Python可视化查看数据集完整性: missingno库(用于数据分析前的数据检查)
数据分析之前首先要保证数据集的质量,missingno库提供了一个灵活易用的可视化工具来观察数据缺失情况,是基于matplotlib的,接受pandas数据源 快速开始 样例数据使用 NYPD Mot ...
- 206--Reverse A Singly Linked List
package LinedList; public class ReverseASinglyLinkedList { //解法一:迭代. public ListNode reverseList(Lis ...
- GOJS的使用
项目当中要求表与表之间建立关联关系,需要用到Gojs(只想说这是个什么?),以前完全没接触过gojs,所以记录下使用中的技巧和方法 http://www.devtalking.com/articles ...
- 1 NLP学习大纲
一.自然语言处理概述 1)自然语言处理:利用计算机为工具,对书面实行或者口头形式进行各种各样的处理和加工的技术,是研究人与人交际中以及人与计算机交际中的演员问题的一门学科,是人工智能的主要内容. 2) ...
- 在centos下安装pycrypto报错
yum -y install python36-devel libevent-devel libjpeg-devel zlib-devel