迷你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方法,现在插入元素更快了。

机器瞎学/数据掩埋/模式混淆/人工智障/深度遗忘/神经掉线/计算机幻觉/专注单身二十五年
原文地址:https://www.cnblogs.com/rubylouvre/p/3098295.html