2012-05-04 5 views
4

ArrayControllerとCollectionViewの両方ともテンプレートを使用して 'content'配列をレンダリングするのと同じ機能を持ちますが、コレクションビューにはDOM内のどこにでも追加する 'append ..'私は正しい?他のdiffはありますか?どちらがより有用になるでしょうか?Ember.js - ArrayControllerとCollectionViewの相違点

答えて

19

ArrayControllerはEmber.ArrayProxyの単なる拡張です。その内容として配列セットを扱うためのインターフェースを提供します。それはどんな観察者にも配列変異通知を送るのを扱います。 DOMとは何も処理しません。イベントやビューレイヤから完全に分離されています。

CollectionViewは、ArrayController(またはEmber.Arrayの期待に応えるもの)をとり、その内容をEmber.Viewsとして反映するビュー(DOMを操作してイベントを処理することを意味する)です。それはArrayControllerによって出された突然変異イベントを待ち受け、一致するように自身を更新します。特にarrayDidChangeメッセージをリッスンすることによって動作します。その内容からのメッセージがなければ、その意見を作成したり破壊したりすることは知られていません。

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

1

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

+0

@ pjmorse:この愚かな質問にお答えいただきありがとうございます。私は間違ってEmber.jsのコンセプトを理解することに始めましたが、SproutCoreでコアコンセプトを理解するのは本当にうれしいです。今私ははるかに良く理解する。 – Manoharan