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 相关文章推荐
javascript innerText和innerHtml应用
Jan 28 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
Feb 10 Javascript
js限制文本框只能输入数字方法小结
Jun 16 Javascript
使用JavaScript获取地址栏参数的方法
Dec 19 Javascript
jquery滚动加载数据的方法
Mar 09 Javascript
学习JavaScript图片预加载模块
Nov 07 Javascript
工厂模式在JS中的实践
Jan 18 Javascript
详解React 在服务端渲染的实现
Nov 16 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
May 10 Javascript
Vue+Koa2+mongoose写一个像素绘板的实现方法
Sep 10 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
Dec 10 Javascript
详解vue父子组件状态同步的最佳方式
Sep 10 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中time(),date(),mktime()区别介绍
2013/09/28 PHP
PHP 快速排序算法详解
2014/11/10 PHP
Zend Studio使用技巧两则
2016/04/01 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
2019/12/11 PHP
select 控制网页内容隐藏于显示的实现代码
2010/05/25 Javascript
js注意img图片的onerror事件的分析
2011/01/01 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
javascript事件委托的用法及其好处简析
2016/04/04 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
原生JS实现图片网格式渐显、渐隐效果
2017/06/05 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
JS猜数字游戏实例讲解
2020/06/30 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
2020/07/26 Javascript
vue 实现element-ui中的加载中状态
2020/11/11 Javascript
vue实现表格合并功能
2020/12/01 Vue.js
python自然语言编码转换模块codecs介绍
2015/04/08 Python
按日期打印Python的Tornado框架中的日志的方法
2015/05/02 Python
浅谈Python中copy()方法的使用
2015/05/21 Python
python生成器generator用法实例分析
2015/06/04 Python
Python多进程机制实例详解
2015/07/02 Python
Django ORM 常用字段与不常用字段汇总
2019/08/09 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
自我鉴定200字
2013/10/28 职场文书
餐饮业创业计划书范文
2014/01/06 职场文书
幼儿园庆六一活动方案
2014/03/06 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
使用Python解决图表与画布的间距问题
2022/04/11 Python