Ember.js — разница между ArrayController и CollectionView

И ArrayController, и CollectionView имеют одинаковую функциональность для рендеринга массива контента с использованием шаблона, за исключением того, что представление коллекции имеет методы «добавить..» для добавления в любое место в DOM. Я прав? Есть ли другой дифф? Какой из них будет полезнее?


person Manoharan    schedule 04.05.2012    source источник


Ответы (2)


ArrayController — это просто расширение Ember.ArrayProxy. Он предоставляет интерфейс для работы с массивом, установленным в качестве его содержимого. Он обрабатывает отправку уведомлений об изменениях массива любым наблюдателям. Он не имеет ничего общего с DOM и полностью изолирован от событий или уровня представления.

CollectionView — это представление (что означает, что оно манипулирует DOM и обрабатывает события), которое принимает ArrayController (или что-либо, что соответствует ожиданиям Ember.Array) и отображает его содержимое как Ember.Views. Он прослушивает события мутации, выдаваемые ArrayController, и обновляет себя в соответствии с ними. Он работает, специально прослушивая сообщения arrayDidChange. Без этих сообщений, исходящих от его контента, он не знал бы, создавать или уничтожать свои представления.

Когда вы используете помощник {{#each YourApp.yourArrayController}}, вы фактически создаете экземпляр Ember.CollectionView, который принимает контроллер в качестве своего содержимого.

person Christopher Swasey    schedule 04.05.2012

ArrayController — это контроллер. CollectionView — это представление. Это довольно фундаментальное концептуальное различие. Теоретически ArrayController требует, чтобы представление отображало массив с использованием шаблона. Вот почему в представлении есть методы добавления, а в контроллере нет.

person pjmorse    schedule 04.05.2012
comment
@ pjmorse: Спасибо за ответ на этот глупый вопрос. Я ошибочно начал с Ember.js, чтобы понять концепции, но действительно хорошо начать с SproutCore, чтобы понять основные концепции. Теперь я понимаю намного лучше. - person Manoharan; 04.05.2012