angular框架实现全选与单选chekbox的自定义


Posted in Javascript onJuly 06, 2017

2017年7月4日,我原本可以像其他同时一样早点回家,玩几把王者荣耀,但是我没有,因为我选择留下来,写一篇博客。

项目中经常性的会遇到什么点击“全选”按钮,勾中所有“单选按钮”,当所有单选按钮勾选后,全选按钮自动勾选,这里我并不是想说这是多么难的一个事情,我只是想炫耀下自己写的东西。

(勾选与否,是切换类名来实现的)换一个背景图片而已

1)页面内容(静态页)

<ul class='list-inline my-list-inline'>
<li class="action-check" ng-class="{'active':allHasChoice}" ng-click="clicktarget(true,tmp,dataList)">

<li>中文名称</li>

<li>英文名称</li>

<li>申请人类型</li>
<ul>
<div class="list-data">
<table>

<tbody>


<tr ng-repeat="tmp in dataList track by tmp.idTell"



ng-class="{true:'active',false:''}[targetChoice[tmp.idTell]==true]"



ng-click="ctmlicktarget(false,tmp,dataList)" 


>



<td> 




<span class="choice-icon"></span>




<span class="company-name over-flow-handel-style" title="{{tmp.chineseName}}"




 ng-bind="tmp.cineseName"></span>



</td>



 <td> 




<span class="english-name over-flow-handel-style" title="{{tmp.englishName}}"



   ng-bind="tmp.englishName"></span>



 </td>



<td> 




<span class="english-name over-flow-handel-style" title="{{tmp.abbreviation}}"




 ng-bind="tmp.abbreviation"></span>



</td>

 </tr> 

</tbody>
</table>

2)js代码

首先当然有一个参数数组,用于经营经营渲染页面:

$scope.dataList=[
 {'chineseName':'百度科技','englishName':'baidukeji','abbreviation':'小度','idTell':'bd'},
  
{'chineseName':'小牛科技','englishName':'xiaoniukeji','abbreviation':'小牛','idTell':'xn'},

  {'chineseName':'京东科技','englishName':'jdkeji','abbreviation':'小京','idTell':'xj'},
 
 {'chineseName':'顺风科技','englishName':'sfkeji','abbreviation':'小风','idTell':'xf'},
 
 {'chineseName':'阿里科技','englishName':'alkeji','abbreviation':'小里','idTell':'xl'},

  {'chineseName':'淘宝科技','englishName':'tbkeji','abbreviation':'小宝','idTell':'xb'},
 
 {'chineseName':'天猫科技','englishName':'tmkeji','abbreviation':'小猫','idTell':'xm'}
];

定义一个数组用于存储,选中的选项

$scope.targetChoice=[];

定义一个很简单的方法:用于操作单选,全选的效果实现

$scope.clicktarget=function(isAllChoiceBtn,tmp,dataList){
  //isAllChoiceBtn:用于表示用户点击的是否是全选按钮,tmp:是数据集合中的一个数据对象
var count=0;//记录被选中的子选项的个数

  //说明用户点击的不是“全选”按钮
  isAllChoiceBtn==false?(function(){
 
//当前选项取反

 $scope.targetChoice[tmp.idTell]=!$scope.targetChoice[tmp.idTell];


//遍历数据集合,统计已经被购中的单选项


angular.foreach(dataList,function(v,k){
     $scope.targetChoice[v.idTell]&& count++;
    }); 
    //如果count等于数据集合得长度,说明所有的单选被购中
    count==dataList.length && $scope.allHasChoice=true:$scope.allHasChoice==false;

})()
   //说明点击的"全选"按钮
  :(function(){
    $scope.allHasChoice=!$scope.allHasChoice;//状态取反
    $scope.allHasChoice==false?
      //说明取消全选 
    :angular.forEach(dataList,function(v,k){
      $scope.targetChoice[v.idTell]=$scope.allHasChoice;
      count=0;
     })
     //说明选中全选
    :angular.forEach(dataList,function(v,k){
     $scope.targetChioce[v.idTell]=$scope.allHasChoice;
     count++;
    });
  })()
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
关于 byval 与 byref 的区别分析总结
Oct 08 Javascript
js使用函数绑定技术改变事件处理程序的作用域
Dec 26 Javascript
如何将网页表格内容导入excel
Feb 18 Javascript
JS烟花背景效果实现方法
Mar 03 Javascript
jquery实现两边飘浮可关闭的对联广告
Nov 27 Javascript
如何判断Javascript对象是否存在的简单实例
May 18 Javascript
AngularJS入门教程之双向绑定详解
Aug 18 Javascript
jquery实现的table排序功能示例
Mar 10 Javascript
jsonp跨域及实现百度首页联想功能的方法
Aug 30 Javascript
Vue常用的几个指令附完整案例
Nov 06 Javascript
npm 常用命令详解(小结)
Jan 17 Javascript
vue 解决form表单提交但不跳转页面的问题
Oct 30 Javascript
详解Angular Reactive Form 表单验证
Jul 06 #Javascript
让div运动起来 js实现缓动效果
Jul 06 #Javascript
老生常谈Bootstrap媒体对象
Jul 06 #Javascript
jQuery实现选中行变色效果(实例讲解)
Jul 06 #jQuery
运用jQuery写的验证表单(实例讲解)
Jul 06 #jQuery
Textarea输入字数限制实例(兼容iOS&amp;安卓)
Jul 06 #Javascript
react系列从零开始_简单谈谈react
Jul 06 #Javascript
You might like
社区(php&amp;&amp;mysql)五
2006/10/09 PHP
php生成excel列序号代码实例
2013/12/24 PHP
PHP实现图片批量打包下载功能
2017/03/01 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
2011/09/19 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
浅谈javascript中onbeforeunload与onunload事件
2015/12/10 Javascript
Vee-Validate的使用方法详解
2017/09/22 Javascript
vue获取DOM元素并设置属性的两种实现方法
2017/09/30 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
JS时间戳与日期格式互相转换的简单方法示例
2021/01/30 Javascript
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
Python实现的tab文件操作类分享
2014/11/20 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
使用Django搭建一个基金模拟交易系统教程
2019/11/18 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
Window系统下Python如何安装OpenCV库
2020/03/05 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
详解Python中namedtuple的使用
2020/04/27 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
python/golang 删除链表中的元素
2020/09/14 Python
python操作toml文件的示例代码
2020/11/27 Python
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
瑰珀翠美国官网:Crabtree & Evelyn美国
2016/11/29 全球购物
DNA测试:Orig3n
2019/03/01 全球购物
双十佳事迹材料
2014/01/29 职场文书
计算机大学生职业生涯规划书范文
2014/02/19 职场文书
2014年人事行政工作总结
2014/12/03 职场文书
2015年清明节演讲稿范文
2015/03/17 职场文书
社区禁毒宣传活动总结
2015/05/07 职场文书
MySQL数字类型自增的坑
2021/05/07 MySQL
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android
IIS服务器中设置HTTP重定向访问HTTPS
2022/04/29 Servers