Angular.JS判断复选框checkbox是否选中并实时显示


Posted in Javascript onNovember 30, 2016

首先来看看简单的效果图,如下所示:

Angular.JS判断复选框checkbox是否选中并实时显示

看一下html代码:

<!DOCTYPE html>
<html data-ng-app="App">
<head>
 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script>
 <script src="script2.js"></script>
</head>
<body data-ng-controller="AddStyleCtrl">

 <div>Choose Tags</div> 
 <div>
  <div>You have choosen:</div>
  <hr>
  <label data-ng-repeat="selectedTag in selectedTags">
   (({{selectedTag}}))
  </label>
  <hr>
  <div data-ng-repeat="category in tagcategories">
   <div>{{ category.name }}</div>
   <div data-ng-repeat="tag in category.tags">
    <div>
     <input type="checkbox" id={{tag.id}} name="{{tag.name}}" ng-checked="isSelected(tag.id)" ng-click="updateSelection($event,tag.id)">
     {{ tag.name }}
    </div>
   </div>
   <hr>
  </div>
 </div>

<pre>{{selected|json}}</pre>
<pre>{{selectedTags|json}}</pre>

</body>
</html>

line2 定义了AngularJS App;

line4 引入angularjs脚本;

line5 引入自己写的script2.js脚本;

line7 指定控制器AddStyleCtrl

line13-15 实时显示已选标签给用户看;

line17-line26 使用双重循环列出数据库(本例中就存储在了controller的一个对象里)中的数据;

line21的这行代码作用可大了:<input type="checkbox" id={{tag.id}} name="{{tag.name}}" ng-checked="isSelected(tag.id)" ng-click="updateSelection($event,tag.id)">

存储了tag的id,name,利用isSelected(tag.id)来判断是否被checked,点击时候调用updateSelection($event,tag.id)方法;

如果想 ng-click 触发的函数里获取到该触发该函数的元素不能直接传入 this ,而需要传入 event。因为在Angularjs里面,这个地方的this是event。因为在Angularjs里面,这个地方的this是scope 。我们可以传入 event,然后在函数里面通过event,然后在函数里面通过event.target 来获取到该元素。

line29-30 是测试时候给自己看的,可以看到selected数组和selectedTags数组中的内容;

然后看看AngularJS代码:(script2.js)

/**
 * Created by zh on 20/05/15.
 */
// Code goes here

var iApp = angular.module("App", []);



iApp.controller('AddStyleCtrl', function($scope)
{
 $scope.tagcategories = [
  {
   id: 1,
   name: 'Color',
   tags: [
    {
     id:1,
     name:'color1'
    },
    {
     id:2,
     name:'color2'
    },
    {
     id:3,
     name:'color3'
    },
    {
     id:4,
     name:'color4'
    },
   ]
  },
  {
   id:2,
   name:'Cat',
   tags:[
    {
     id:5,
     name:'cat1'
    },
    {
     id:6,
     name:'cat2'
    },
   ]
  },
  {
   id:3,
   name:'Scenario',
   tags:[
    {
     id:7,
     name:'Home'
    },
    {
     id:8,
     name:'Work'
    },
   ]
  }
 ];

 $scope.selected = [];
 $scope.selectedTags = [];

 var updateSelected = function(action,id,name){
  if(action == 'add' && $scope.selected.indexOf(id) == -1){
   $scope.selected.push(id);
   $scope.selectedTags.push(name);
  }
  if(action == 'remove' && $scope.selected.indexOf(id)!=-1){
   var idx = $scope.selected.indexOf(id);
   $scope.selected.splice(idx,1);
   $scope.selectedTags.splice(idx,1);
  }
 }

 $scope.updateSelection = function($event, id){
  var checkbox = $event.target;
  var action = (checkbox.checked?'add':'remove');
  updateSelected(action,id,checkbox.name);
 }

 $scope.isSelected = function(id){
  return $scope.selected.indexOf(id)>=0;
 }
});

line6 定义了angular app;

line10 定义了控制器AddStyleCtrl;

line12-63 定义了 标签对象

line64,66 声明了$scope中的两个数组对象(可以合并为1个),分别用来存储tag的id和name;

line68-78 定义了updateSelected方法,这个方法会被updateSelection调用;

line69-72:如果add操作且 ‘数组[id]' 元素不存在,向数组中添加数据(id,name);

line73-77:如果remove操作且‘数组[id]' 元素存在,从数组中删除数据(id,name);

line80-84定义了updateSelection方法,这个方法会在html页面的checkbox被点击时调用;

line81通过$event变量来获取点击的dom元素;

line82通过checkbox的当前状态来决定是add操作还是remove操作;

line83调用updateSelected方法,更新数据;

line86-88定义了isSelected方法,用来判断ID为id的checkbox是否被选中,然后传值给页面的ng-checked指令;

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问欢迎大家留言交流。

作者: ZH奶酪——张贺
Q Q: 1203456195
邮箱: cheesezh@163.com
出处: >http://www.cnblogs.com/CheeseZH/

Javascript 相关文章推荐
javascript eval函数深入认识
Feb 21 Javascript
事件绑定之小测试  onclick &amp;&amp; addEventListener
Jul 31 Javascript
javascript学习基础笔记之DOM对象操作
Nov 03 Javascript
JS判断数组中是否有重复值得三种实用方法
Aug 16 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
Oct 24 Javascript
jQuery自定义动画函数实例详解(附demo源码)
Dec 10 Javascript
Svg.js实例教程及使用手册详解(一)
May 16 Javascript
jQuery实现遮罩层登录对话框
Dec 29 Javascript
ES6 更易于继承的类语法的使用
Feb 11 Javascript
vue 微信扫码登录(自定义样式)
Jan 06 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
Apr 01 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
Oct 31 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
Nov 30 #Javascript
浅析JavaScript中break、continue和return的区别
Nov 30 #Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
Nov 30 #Javascript
浅析script标签中的defer与async属性
Nov 30 #Javascript
JavaScript 字符串常用操作小结(非常实用)
Nov 30 #Javascript
js实现表单提交后不重新刷新当前页面
Nov 30 #Javascript
html判断当前页面是否在iframe中的实例
Nov 30 #Javascript
You might like
用php实现像JSP,ASP里Application那样的全局变量
2007/01/12 PHP
PHP的分页功能
2007/03/21 PHP
windows平台中配置nginx+php环境
2015/12/06 PHP
Laravel框架实现发送短信验证功能代码
2016/06/06 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
Jquery方式获取iframe页面中的 Dom元素
2014/05/07 Javascript
JavaScript保存并运算页面中数字类型变量的写法
2015/07/06 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
给easyui datebox扩展一个清空的实例
2016/11/09 Javascript
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
2019/11/12 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
python中文件变化监控示例(watchdog)
2017/10/16 Python
Python中类的初始化特殊方法
2017/12/01 Python
Python简单实现socket信息发送与监听功能示例
2018/01/03 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
python从内存地址上加载python对象过程详解
2020/01/08 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
2021/01/06 Python
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
几道PHP面试题
2013/04/14 面试题
网络体系结构及协议的定义
2014/03/13 面试题
2014年机关党委工作总结
2014/12/11 职场文书
信访维稳承诺书
2015/05/04 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
python模板入门教程之flask Jinja
2022/04/11 Python