我的MVVM框架 v3教程——流程绑定
avalon为我们带来了三大利点:
- 关注点分离
- 操作数据即操作DOM
- 动态模板
关注点分离是MVVM与身俱来的。
操作数据即操作DOM,是VM中的访问器带来的。
动态模板是流程绑定实现的。
avalon目前拥有四种流程绑定器:each, with, if, unless。
先给出JS部分代码:
require( "avalon,ready" , function ($) { var $$ = $.MVVM var VM = $$.render({ user:{ xxxx: "aaaa" , yyyy: "bbbb" }, list:[{ title: "aaa" }, { title: "bbb" }, { title: "ccc" }, { title: "ddd" } ], toggle: true }); setTimeout( function (){ VM.toggle( false ) },2500) }); |
each是用于遍历数组与集合,对应到HTML的绑定形式为:data-each-[item]-[index]
< ul data-each-item="list"> < li data-text="item.title">aaaa</ li > </ ul > |
with能让用户直接在下级元素中直接使用这个对象的第一层的键名作为参数,就像js的with一样,ko2.1之前就是直接这么干的。不过avalon是通过特权函数与原型函数模拟这效果的。
if ( code == 2 ){ //处理with 绑定 var fn = function (){} //随便搞个构造器 fn.prototype = model; //让它继承原来的VM,或VM某一层的对象属性 model = new fn; //然后得到它的实例 for ( var name in val){ //然后遍历with的参数对象的键值对,将它们赋给实例。 if (val.hasOwnProperty(name)){ //因此访问时会先访问val的第一层值,没有到原型链上找 model[name] = val[name] } } } |
< div data-with="user"> < p data-text="xxxx"></ p > < p data-text="yyyy"></ p > </ div > |
if绑定,如果它的参数是真值,那么它就渲染它的子节点,否则里面为空。
if绑定,如果它的参数是假值,那么它就渲染它的子节点,否则里面为空。
< div data-if="toggle"> 这是诸葛亮 </ div > < div data-unless="toggle"> 这是周瑜 </ div > |
如果您觉得此文有帮助,可以打赏点钱给我支付宝1669866773@qq.com ,或扫描二维码


机器瞎学/数据掩埋/模式混淆/人工智障/深度遗忘/神经掉线/计算机幻觉/专注单身二十五年
标签:
javascript
, mass
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义