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 window.setTimeout() 的详细用法
Nov 04 Javascript
js模拟C#中List的简单实例
Mar 06 Javascript
js+jquery常用知识点汇总
Mar 03 Javascript
QQ登录背景闪动效果附效果演示源码下载
Sep 22 Javascript
JavaScript多并发问题如何处理
Oct 28 Javascript
解析Javascript单例模式概念与实例
Dec 05 Javascript
JS验证码实现代码
Sep 14 Javascript
浅析Vue中method与computed的区别
Mar 06 Javascript
基于vue2.0动态组件及render详解
Mar 17 Javascript
vue移动端路由切换实例分析
May 14 Javascript
使用proxy实现一个更优雅的vue【推荐】
Jun 19 Javascript
深入理解JavaScript 中的执行上下文和执行栈
Oct 23 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
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
2016/09/30 PHP
根据key删除数组中指定的元素实现方法
2017/03/02 PHP
PHP curl批处理及多请求并发实现方法分析
2018/08/15 PHP
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
简体中文转换繁体中文(实现代码)
2013/12/25 Javascript
纯javascript移动优先的幻灯片效果
2015/11/02 Javascript
jQuery通用的全局遍历方法$.each()用法实例
2016/07/04 Javascript
原生js编写焦点图效果
2016/12/08 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
浅谈angular4 ng-content 中隐藏的内容
2017/08/18 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
2018/03/09 Javascript
在Python的struct模块中进行数据格式转换的方法
2015/06/17 Python
你所不知道的Python奇技淫巧13招【实用】
2016/12/14 Python
解读python logging模块的使用方法
2018/04/17 Python
使用python爬虫获取黄金价格的核心代码
2018/06/13 Python
使用Django2快速开发Web项目的详细步骤
2019/01/06 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
使用python实现希尔、计数、基数基础排序的代码
2019/12/25 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
如何让PyQt5中QWebEngineView与JavaScript交互
2020/10/21 Python
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
2013/01/09 HTML / CSS
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
Redbubble法国:由独立艺术家设计的独特产品
2019/01/08 全球购物
What is view? why do we have view?
2012/06/22 面试题
大宝sod蜜广告词
2014/03/21 职场文书
学雷锋演讲稿汇总
2014/05/10 职场文书
员工教育培训协议书
2014/09/27 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
入团申请书格式
2019/06/20 职场文书
MySQL实战记录之如何快速定位慢SQL
2022/03/23 MySQL