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 相关文章推荐
JS 显示当前日期与时间的代码
Mar 24 Javascript
JavaScript的strict模式与with关键字介绍
Feb 08 Javascript
jQuery设置和获取HTML、文本和值示例
Jul 08 Javascript
Javascript中的方法和匿名方法实例详解
Jun 13 Javascript
原生JS实现图片轮播与淡入效果的简单实例
Aug 21 Javascript
JavaScript获取服务器端时间的方法
Nov 29 Javascript
JavaScript实现移动端轮播效果
Jun 06 Javascript
mui 打开新窗口的方式总结及注意事项
Aug 20 Javascript
详解JavaScript 中 if / if...else...替换方式
Jul 15 Javascript
Vue插值、表达式、分隔符、指令知识小结
Oct 12 Javascript
JavaScript函数定义方法实例详解
Mar 05 Javascript
ES6 Generator函数的应用实例分析
Jun 26 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制作静态网站的模板框架(二)
2006/10/09 PHP
php支付宝在线支付接口开发教程
2016/09/19 PHP
代码精简的可以实现元素圆角的js函数
2007/07/21 Javascript
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
js获取会话框prompt的返回值的方法
2015/01/10 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
[46:25]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第二局
2016/03/05 DOTA
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
代码分析Python地图坐标转换
2018/02/08 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
python怎么对数字进行过滤
2020/07/05 Python
css3实现针线缝合效果(图解步骤)
2013/02/04 HTML / CSS
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
澳大利亚购买太阳镜和眼镜网站:Glamoureyes
2020/09/22 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
如何开启linux的ssh服务
2015/02/14 面试题
药品质量检测应届生求职信
2013/11/14 职场文书
自我评价200字分享
2013/12/17 职场文书
产品销售员岗位职责
2013/12/18 职场文书
总经理工作职责范文
2014/03/14 职场文书
标准的毕业生自荐信
2014/04/20 职场文书
党员承诺书格式范文
2015/04/28 职场文书
2015年食品安全工作总结
2015/05/15 职场文书
2015年测量员工作总结
2015/05/23 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
公司转让协议书
2016/03/19 职场文书
2019年亲子运动会口号
2019/10/11 职场文书
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle
Vue如何实现组件间通信
2021/05/15 Vue.js
使用HttpSessionListener监听器实战
2022/03/17 Java/Android