4

ArrayControllerとCollectionViewはどちらも、テンプレートを使用して「content」配列をレンダリングするための同じ機能を備えていますが、コレクションビューにはDOM内の任意の場所に追加する「append..」メソッドがあります。私は正しいですか?他に違いはありますか?どちらがより便利になりますか?

4

2 に答える 2

19

ArrayControllerは、Ember.ArrayProxyの単なる拡張です。配列セットをその内容として操作するためのインターフェースを提供します。オブザーバーへの配列ミューテーション通知のディスパッチを処理します。DOMとは何の関係も処理せず、イベントまたはビューレイヤーから完全に分離されています。

CollectionViewは、ArrayController(またはEmber.Arrayの期待に応えるもの)を受け取り、その内容をEmber.Viewsとして反映するビュー(つまり、DOMを操作してイベントを処理する)です。ArrayControllerによって出力されたミューテーションイベントをリッスンし、一致するように自身を更新します。特にarrayDidChangeメッセージをリッスンすることで機能します。そのコンテンツからのメッセージがなければ、ビューを作成または破棄することはできません。

{{#each YourApp.yourArrayController}}ヘルパーを使用すると、実際には、コントローラーをコンテンツとして受け取るEmber.CollectionViewをインスタンス化しています。

于 2012-05-04T15:34:57.870 に答える
1

ArrayControllerはコントローラーです。CollectionViewはビューです。これはかなり根本的な概念の違いです。理論的には、ArrayControllerには、テンプレートを使用して配列をレンダリングするためのビューが必要です。そのため、ビューには追加メソッドがあり、コントローラーにはありません。

于 2012-05-04T14:09:46.943 に答える