Ruby's Louvre

每天学习一点点算法

导航

迷你MVVM框架 avalonjs 0.7发布

本版本主要是添加了template绑定与对扫描机制进行大量改良

template绑定的语法为ms-template-id="aaa", id为页面上的某个元素节点,aaa为ViewModel的一个对象属性。建议将此对象属性的名字标识为不可监控的,即$tmplOpts,因为用户可能用不到此对象,我们就无需立即转换它为子ViewModel。id是一个script标签,其type属性改成浏览器不认识的MIME,比如"xxx/text",然后在script标签间填写内容就行了。里面也可以使用绑定属性。当avalon扫描到带着ms-template属性的元素时,它会根据id取得script标签的innerHTML,然后将它赋给此元素,然后框拐杖再取aaa对象为其绑定内容。

扫描机制的改良在于,每次都对元素取innerHTML,判定里面有没有ms-或{{}}字样,如果没有我们就不再往下扫描。

其他改进还有,重构了scanTag的循环, 不再使用nextSibling方式进行遍历,因为这很容易在if绑定中由于我们突然移除元素而中断循环。为此,if绑定也省去几行代码。

重构了scanAttr,让其更精简。

重构了removeItemView内部方法,此方法用于监控数组的splice方法,现在移除元素更快了。

重构了addItemView内部方法,此方法用于监控数组的push方法,现在插入元素更快了。

posted on 2013-05-25 14:16  司徒正美  阅读(1952)  评论(5编辑  收藏  举报