ArrayController和CollectionView都具有使用模板渲染“content”数组的相同功能,除了集合视图具有“append ..”方法以附加到DOM中的任何位置。我对吗?还有其他差异吗?哪一个会更有用?
答案 0 :(得分:19)
ArrayController只是Ember.ArrayProxy的扩展。它提供了一个使用数组作为其内容的接口。它处理向任何观察者发送数组变异通知。它不处理与DOM有关的任何事情,并且与事件或视图层完全隔离。
CollectionView是一个视图(意味着它操纵DOM并处理事件),它接受一个ArrayController(或满足Ember.Array期望的任何东西)并将其内容反映为Ember.Views。它侦听ArrayController发出的突变事件,并更新自身以匹配。它的工作原理是专门监听arrayDidChange消息。如果没有来自其内容的消息,它就不会知道创建或破坏其观点。
当您使用{{#each YourApp.yourArrayController}}帮助程序时,您实际上是在实例化Ember.CollectionView,它将控制器作为其内容。
答案 1 :(得分:1)
ArrayController是一个Controller。 CollectionView是一个视图。这是一个非常基本的概念差异。理论上,ArrayController需要View使用模板渲染数组。这就是为什么View有附加方法而Controller没有。