ArrayControllerとCollectionViewはどちらも、テンプレートを使用して「content」配列をレンダリングするための同じ機能を備えていますが、コレクションビューにはDOM内の任意の場所に追加する「append..」メソッドがあります。私は正しいですか?他に違いはありますか?どちらがより便利になりますか?
2 に答える
ArrayControllerは、Ember.ArrayProxyの単なる拡張です。配列セットをその内容として操作するためのインターフェースを提供します。オブザーバーへの配列ミューテーション通知のディスパッチを処理します。DOMとは何の関係も処理せず、イベントまたはビューレイヤーから完全に分離されています。
CollectionViewは、ArrayController(またはEmber.Arrayの期待に応えるもの)を受け取り、その内容をEmber.Viewsとして反映するビュー(つまり、DOMを操作してイベントを処理する)です。ArrayControllerによって出力されたミューテーションイベントをリッスンし、一致するように自身を更新します。特にarrayDidChangeメッセージをリッスンすることで機能します。そのコンテンツからのメッセージがなければ、ビューを作成または破棄することはできません。
{{#each YourApp.yourArrayController}}ヘルパーを使用すると、実際には、コントローラーをコンテンツとして受け取るEmber.CollectionViewをインスタンス化しています。
ArrayControllerはコントローラーです。CollectionViewはビューです。これはかなり根本的な概念の違いです。理論的には、ArrayControllerには、テンプレートを使用して配列をレンダリングするためのビューが必要です。そのため、ビューには追加メソッドがあり、コントローラーにはありません。