7

私は Dojo を使い始めたばかりで、すべてのモジュールの量と質に感心しています。しかし、AngularJS から来た私は、 Dojo の MVC の双方向データ・バインディングが少し欠けていることに気付きました。

Dojo Object Store をサブスクライブし、ストア内のアイテムを反復処理するためのテンプレートにループを持ち、アイテムが追加/削除されたときにビューを自動的に更新する方法は本当にありませんか? サンプル チュートリアル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){ ... }

AngularJS では、次のようにします。

<li ng-repeat="item in results">
  <span>{{item.text}}</span>
</li>

では、Dojo の豊富なウィジェットとモジュールのコレクションと、AngularJS の双方向データ バインディングを備えた単純なテンプレートのどちらかを選択する必要があるのでしょうか?

4

1 に答える 1

7

まず、道場側に来てくれておめでとう。はい、AngularJS は双方向のデータ バインディングに非常に便利ですが、アプリケーションがより複雑になるにつれて、強力な (そして多数の) Dojo / Dijit / Dojox モジュールの助けが必要になることがすぐにわかります。

そうです、dojo/Observable は現在、Dojo のストアを介してバインディングを提供しています。本当に AngularJS と同じパワーを実現できます。デモについては、 dgridの例を確認してください。

便宜上、モジュールは Angular JS に似た形式でバインドするために作成されています。dbindと呼ばれます。現在は単独で使用でき、間もなく Dojo のコアに統合される予定です。dojox/mvc/Bindも確認する必要があります

于 2013-09-14T20:30:50.653 に答える