我刚开始使用Dojo,我对所有模块的数量和质量印象深刻.然而,来自AngularJS,我发现Dojo的MVC的双向数据绑定有点缺乏.
是否真的没有办法订阅Dojo对象存储,在模板中有一个循环来遍历商店中的项目并在添加/删除项目时自动更新视图?的实例教程使用dojo/store/Observable来实现此笨重逻辑:
results.observe(function(item, removedIndex, insertedIndex){
// this will be called any time a item is added, removed, and updated
if(removedIndex > -1){
removeRow(removedIndex);
}
if(insertedIndex > -1){
insertRow(item, insertedIndex);
}
}, true);
function insertRow(item, i){ ... }
function removeRow(i){ ... }
Run Code Online (Sandbox Code Playgroud)
在AngularJS中你会做这样的事情:
<li ng-repeat="item in results">
<span>{{item.text}}</span>
</li>
Run Code Online (Sandbox Code Playgroud)
那么我必须在Dojo的广泛小部件和模块集合和AngularJS的双向数据绑定的直接模板之间做出选择吗?
首先,恭喜来到Dojo方面.是的AngularJS对于双向数据绑定非常方便,但您很快就会发现,随着应用程序变得越来越复杂,您将需要强大(和众多)Dojo/Dijit/Dojox模块的帮助.
你是对的dojo/Observable目前通过商店在Dojo提供绑定.它可以真正实现与AngularJS相同的功能.查看演示的dgrid示例.
为方便起见,已经制作了一个模块,用于以类似于Angular JS的格式进行绑定.它叫做dbind.它目前可以独立使用,很快就会集成到Dojo的核心中.你还应该检查dojox/mvc/Bind
| 归档时间: |
|
| 查看次数: |
1853 次 |
| 最近记录: |