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实现仿Windows关机效果
Mar 10 Javascript
js 加载时自动调整图片大小
May 28 Javascript
点图片上一页下一页翻页效果
Jul 09 Javascript
基于JQuery的抓取博客园首页RSS的代码
Dec 01 Javascript
jQuery鼠标事件汇总
Aug 30 Javascript
jQuery Validate初步体验(一)
Dec 12 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
Jun 12 Javascript
各式各样的导航条效果css3结合jquery代码实现
Sep 17 Javascript
给easyui datebox扩展一个清空的实例
Nov 09 Javascript
angular使用post、get向后台传参的问题实例
May 27 Javascript
BACKBONE.JS 简单入门范例
Oct 17 Javascript
JS实现图片拖拽交换效果
Nov 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应用技巧
2008/03/27 PHP
php中iconv函数使用方法
2008/05/24 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
浅析php原型模式
2014/11/25 PHP
php 无限分类 树形数据格式化代码
2016/10/11 PHP
Dom操作之兼容技巧分享
2011/09/20 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
使用vue-aplayer插件时出现的问题的解决
2018/03/02 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
2019/03/15 Javascript
js 计算图片内点个数的示例代码
2019/04/04 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
layui实现数据分页功能
2019/07/27 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
vue开发简单上传图片功能
2020/06/30 Javascript
JavaScript字符串转数字的简单实现方法
2020/11/27 Javascript
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
python2与python3共存问题的解决方法
2018/09/18 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
Python Collatz序列实现过程解析
2019/10/12 Python
德国机车企业:FC-Moto
2017/10/27 全球购物
网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?
2016/03/27 面试题
法务专员岗位职责
2014/01/02 职场文书
《北大荒的秋天》教学反思
2014/04/14 职场文书
公司安全管理制度范本
2015/08/05 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书
JavaScript严格模式不支持八进制的问题讲解
2021/11/07 Javascript
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技
配置nginx负载均衡
2022/05/06 Servers
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS