我使用ractivejs,我知道angularjs的双向绑定"脏检查"但是我不知道ractivejs的原理,谁知道?我想要一个详细的答案。
答案 0 :(得分:2)
Ractive不会对任何内容进行区分或检查,它使用声明性模板确切地知道需要更新的内容。
Ractive基于模板构造virtualDOM。虚拟dom的模板部分(其中包含{{...}}
的部分)使用它们包含的键路径向viewmodel注册。
当发生ractive.set(...)
或其他一种数据操作方法时,会通知依赖项更改(计算和表达式,上游和下游键路径以及观察者也会收到通知)。
Ractive使用runloop批处理实际DOM更改,以便在周期结束时进行任何设置操作。
除API调用外,Ractive默认提供双向绑定。这将需要DOM事件从表单输入控件映射到API调用,以设置绑定到的数据(通过指定的键路径)。
Ractive确实提供了.update(keypath)
和.updateModel(keypath)
方法,可用于从模型到视图刷新更改,或者在Ractive无法了解它们时查看模型,例如使用第三方小部件库。