И ArrayController, и CollectionView имеют одинаковую функциональность для рендеринга массива контента с использованием шаблона, за исключением того, что представление коллекции имеет методы «добавить..» для добавления в любое место в DOM. Я прав? Есть ли другой дифф? Какой из них будет полезнее?
Ember.js — разница между ArrayController и CollectionView
Ответы (2)
ArrayController — это просто расширение Ember.ArrayProxy. Он предоставляет интерфейс для работы с массивом, установленным в качестве его содержимого. Он обрабатывает отправку уведомлений об изменениях массива любым наблюдателям. Он не имеет ничего общего с DOM и полностью изолирован от событий или уровня представления.
CollectionView — это представление (что означает, что оно манипулирует DOM и обрабатывает события), которое принимает ArrayController (или что-либо, что соответствует ожиданиям Ember.Array) и отображает его содержимое как Ember.Views. Он прослушивает события мутации, выдаваемые ArrayController, и обновляет себя в соответствии с ними. Он работает, специально прослушивая сообщения arrayDidChange. Без этих сообщений, исходящих от его контента, он не знал бы, создавать или уничтожать свои представления.
Когда вы используете помощник {{#each YourApp.yourArrayController}}, вы фактически создаете экземпляр Ember.CollectionView, который принимает контроллер в качестве своего содержимого.
ArrayController — это контроллер. CollectionView — это представление. Это довольно фундаментальное концептуальное различие. Теоретически ArrayController требует, чтобы представление отображало массив с использованием шаблона. Вот почему в представлении есть методы добавления, а в контроллере нет.