刚刚到一家新的公司,我新接手的项目采用的mvvm框架是avalon,固然我之前没有学过angular,可是用过react,因此对于这类框架应该不算陌生。但毕竟是一个新的框架,因此仍是先学起来,俗话说得好,技多不压身嘛。听说avalon兼容性很是好,支持IE6+,无依赖,体积小,小伙伴们是否是对它更加有兴趣了呢?css
这些内容看起来一点也没有react复杂,看到这里拿下它的信心增长了很多啊~下面开始边学习边记录咯。html
ms-value数据能经过表单元素的value值显示出来,也支持插值表达式,但不能使用过滤器react
当表单元素是radio时,要求属性是一个布尔值,当它的内容改动时,avalon会将此元素的checked值赋值给该属性;数组
须要对radio多选一的时候用ms-duplex-text属性进行双向绑定(文本值),若是是布尔值就用ms-duplex-boolean;缓存
当表单元素是checkbox时,要求属性是一个数组,当咱们改动它的内容时,avalon就会将此元素的value值push进该属性;ruby
当表单元素是select时,要求属性是一个字符串或数组,当咱们选中它的某一项时,avalon就会将此option元素的value值或text值push进该属性。框架
这种方式是经过display属性来控制显示与隐藏的。dom
这种方式会从dom树中移除对应的节点,隐藏后原节点变为注释节点。mvvm
对象、数组、日期类型的数据绑定后 不能显示获取,可经过this['data-array']这样的方式获取。学习
ms-class="aaa:isOk"//当isOK为true时,添加类名aaa
ms-class="aaa" ms-class-1="bbb" ms-class-2="ccc"//类名为aaa bbb ccc
ms-class="aaa bbb ccc:isShow"//若是isShow为true,三个类名均添加,不然均不添加
ms-active、ms-hover分别用来模拟:active,:hover效果,用法与ms-class同样,ms-active只在点击那一瞬有效,ms-hover只有掠过期有效
ms-duplex-string/ms-duplex:应用于表单元素,经过value属性同步vm
ms-duplex-number:应用于变单元素,若是value是数字格式就转换为数值,不然不作转换,而后再同步vm
ms-duplex-boolean:应用于全部变单元素,value为“true”时转换为true,其余值转为false,同步vm
ms-duplex-checked:只应用于radio,checkbox,经过checked属性同步vm
ms-data-duplex-observe:能够暂停数据的同步
data-duplex-changed:当监听的值发生变化时触发一个回调
data-duplex-focus:设置焦点,让光标位于value的最后
data-duplex-event:为元素绑定事件,支持blur,keyuo
实现数据验证、类型转换、格式化的功能,下面的例子完成了限制表单长度的功能:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>duplexHooks</title> <script src="avalon.js"></script> <script> avalon.ready(function(){ var vm = avalon.define({ $id: "test", aaa: "aaa" }); avalon.scan(); }); avalon.duplexHooks.limit = { get: function(str, data){ var limit = parseFloat(data.element.getAttribute("data-duplex-limit")); if(str.length > limit) { return data.element.value = str.slice(0, limit); } return str; } } </script> </head> <body> <div ms-controller="test"> <input type="text" ms-duplex-limit="aaa" data-duplex-limit="8">{{aaa}} </div> </body> </html>