avalon繫結實現checkbox全選簡單介紹
duplex雙工繫結是avalon繫結裡面最有趣的一個,因為它在內部幫開發者做了很多事,讓開發者寫的程式碼減少,程式碼更優雅。
下面隨便演示一個常見的checkbox全選。
實現要求:
(1).勾選了全選框後,下面的子選框全被勾選;沒勾選全選框,則子選框全部不勾選。
(2).子選框如果有一個未勾選,則取消全選框勾選。
(3).子選框全部勾選,則勾選全選框。
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <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>
需要說明幾點:
(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屬性值的型別有時不要想當然的去判定。本屌就遇到過,明明從後臺傳過來的是id數字,卻無法同步檢視,最後改成ms-duplex-string才解決問題。所以'7'還是7,要判斷清楚。
相關文章
- vue checkbox 實現全選,取消全選Vue
- jQuery 實現checkBox全選效果jQuery
- javascript事件處理函式繫結簡單介紹JavaScript事件函式
- angular雙向繫結簡單實現Angular
- 簡單介紹numpy實現RNN原理實現RNN
- 簡單介紹python中的單向連結串列實現Python
- 簡單介紹NMS的實現方法
- 簡單實現一個雙向繫結
- js中checkbox的全選和反選的實現JS
- checkbox及css實現點選下拉選單CSS
- javascript事件處理函式迴圈批量繫結簡單介紹JavaScript事件函式
- javascript實現繼承方式簡單介紹JavaScript繼承
- javascript實現鏈式呼叫簡單介紹JavaScript
- mvvm-simple雙向繫結簡單實現MVVM
- javascript實現二維陣列實現簡單介紹JavaScript陣列
- avalon框架,簡單的MVVM框架MVVM
- js checkbox 全選 取消全選JS
- javascript實現 checkbox全選和批量刪除功能JavaScript
- jquery實現checkbox核取方塊全選效果jQuery
- 實現微信搖一搖功能簡單介紹
- 使用CORS實現ajax跨域簡單介紹CORS跨域
- JavaScript實現簡單的雙向資料繫結JavaScript
- html文件結構簡單介紹HTML
- jquery操作select下拉選單簡單介紹jQuery
- javascript實現checkbox核取方塊全選和反選功能JavaScript
- JavaScript實現單擊全選 ,再次點選取消全選JavaScript
- RPC模式的介紹以及簡單的實現RPC模式
- 簡單介紹SpringMVC RESTFul實現列表功能SpringMVCREST
- 簡單介紹Go 字串比較的實現示例Go字串
- 實現跨域iframe介面方法呼叫 簡單介紹跨域
- javascript模擬實現私有屬性簡單介紹JavaScript
- jquery實現的元素居中外掛簡單介紹jQuery
- javascript如何實現模組程式設計簡單介紹JavaScript程式設計
- 執行緒池的介紹及簡單實現執行緒
- 手動簡單實現Vue雙向資料繫結Vue
- 滑鼠右鍵點選事件簡單介紹事件
- OpenGL簡單介紹及實踐
- HTML字元實體簡單介紹HTML字元