javascript使用avalon绑定实现checkbox全选


Posted in Javascript onMay 06, 2015

duplex双工绑定是avalon绑定里面最有趣的一个,因为它在内部帮开发者做了很多事,让开发者写的代码减少,代码更优雅。下面随便演示一个常见的checkbox全选。

要求:(老掉牙了,还是说一下)

1.勾选了全选框后,下面的子选框全被勾选;没勾选全选框,则子选框全部不勾选

2.子选框如果有一个未勾选,则取消全选框勾选;

3.子选框全部勾选,则勾选全选框

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
<style type="text/css">
  *{
    margin: 0;
    padding: 0;
  }
  #wrap{
    margin-left: 100px;
  }
  #wrap li{
    display: inline-block;
    *display: inline;
    zoom:1;
    vertical-align: middle;
  }
</style>
<script type="text/javascript" src='seed.js'></script>
</head>
<body>
  <div id='wrap' ms-controller='duplex'>
    <p><input type='checkbox' data-duplex-changed="select_all_cb" ms-duplex-checked='select_all'>全选</p>
    <ul>
      <li ms-repeat='list'>
        <input type='checkbox' ms-duplex-number="selected" ms-attr-value='el.id'>{{el.text}}
      </li>
    </ul>
    <p>选中项的id:{{selected}}</p>
  </div>
  <script type="text/javascript">
  require('avalon',function(avalon){
    var duplex=avalon.define('duplex',function(vm){
      vm.selected=[];//保存勾选的选项的id,方便传给后台
      vm.list=[{id:1,text:'aaa'},{id:2,text:'bbb'},{id:3,text:'ccc'},{id:4,text:'ddd'},{id:5,text:'eee'},{id:6,text:'fff'}];
      vm.select_all_cb=function(){//全选框change事件回调
        var list=duplex.list,selected=duplex.selected;
        if(this.checked){
          avalon.each(list,function(i,v){//循环保存着已经勾选选框的数据
            selected.ensure(v['id']);//如果里面没有当前选框的数据,就保存
          });
        }else
          selected.clear();//清空
      };
      vm.select_all=0;
    });
    duplex.selected.$watch('length',function(after){//监听保存数据数组的变化
      var len=duplex.list.length;      
      if(after==len)//子选框全部被勾选
        duplex.select_all=1;
      else//子选框有一个没有被勾选
        duplex.select_all=0;
    });
    avalon.scan();
  });
  </script>
</body>
</html>

效果

javascript使用avalon绑定实现checkbox全选

需要说明几点:

1.data-duplex-changed负责监听checkbox的变化,进而触发回调。

2.ms-duplex-number="selected"这个就是神器,selected数组是和子选项框同步的,互相影响。也就是说,selected数组的元素个数增加或减少,会更新相应子选项框的视图,反之亦然。

3.ms-duplex-*需要与checkbox value属性值的类型相同,否则无法同步视图。像这里,checkbox value值是数字,则用ms-duplex-number。

4.checkbox value属性值的类型有时不要想当然的去判定。本?啪陀龅焦??髅鞔雍筇ù??吹氖?d数字,却无法同步视图,最后改成ms-duplex-string才解决问题。所以'7'还是7,要判断清楚。

从这个小例子可以看到用avalon这类mvvc是多么的提升编码体验,如果不用,想想要写多少个for循环+if判断!

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
jquery 上下滚动广告
Jun 17 Javascript
jquery 事件执行检测代码
Dec 09 Javascript
ajax上传时参数提交不更新等相关问题
Dec 11 Javascript
Jquery取得iframe下内容的方法
Nov 18 Javascript
怎么选择Javascript框架(Javascript Framework)
Nov 22 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
Jun 23 Javascript
jquery 重写 ajax提交并判断权限后 使用load方法报错解决方法
Jan 19 Javascript
js剪切板应用clipboardData实例解析
May 29 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
Aug 08 Javascript
完美的js div拖拽实例代码
Sep 24 Javascript
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
Dec 15 Javascript
jQuery实现B2B网站后台管理系统侧导航
Jul 08 jQuery
js实现滑动触屏事件监听的方法
May 05 #Javascript
JS根据生日算年龄的方法
May 05 #Javascript
js改变Iframe中Src的方法
May 05 #Javascript
js网页滚动条滚动事件实例分析
May 05 #Javascript
jquery判断单选按钮radio是否选中的方法
May 05 #Javascript
JQuery中Bind()事件用法分析
May 05 #Javascript
JS判断字符串包含的方法
May 05 #Javascript
You might like
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
HTML Dom与Css控制方法
2010/10/25 Javascript
验证码按回车不变解决方法
2013/03/29 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
原生js和jquery实现图片轮播淡入淡出效果
2015/04/23 Javascript
有关easyui-layout中的收缩层无法显示标题的解决办法
2016/05/10 Javascript
微信小程序中post方法与get方法的封装
2017/09/26 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
vue路由前进后退动画效果的实现代码
2018/12/10 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
2019/09/25 Javascript
windows下create-react-app 升级至3.3.1版本踩坑记
2020/02/17 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
Python找出list中最常出现元素的方法
2016/06/14 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
Python学习pygal绘制线图代码分享
2017/12/09 Python
Python程序员面试题 你必须提前准备!
2018/01/16 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
python 字典的打印实现
2019/09/26 Python
Python实现中值滤波去噪方式
2019/12/18 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
西班牙香水和化妆品网上商店:Douglas
2017/10/29 全球购物
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
承认错误的检讨书
2014/01/30 职场文书
《桃花心木》教学反思
2014/02/17 职场文书
总会计师岗位职责
2014/02/19 职场文书
家长对老师的评语
2014/04/18 职场文书
小学生期末评语大全
2014/04/21 职场文书
产品设计开发计划书
2014/05/07 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
写给老师的感谢信
2015/01/20 职场文书
员工表扬信怎么写
2015/05/05 职场文书
青春雷锋观后感
2015/06/10 职场文书
校友会致辞
2015/07/30 职场文书
「偶像大师 MILLION LIVE!」七尾百合子手办开订
2022/03/21 日漫