EmberJS: программно добавление дочернего представления в представление коллекции без изменения основного содержимого
Мое приложение EmberJS в настоящее время сильно смущает меня. У меня есть представление коллекции, которое в свою очередь определяет itemViewClass пользовательского представления, которое я определил в своем коде. Что-то вроде:
App.CarouselView = Ember.CollectionView.extend({
itemViewClass: App.SlideView.extend(),
});
И этот CarouselView отображается внутри шаблона, который имеет динамический сегмент, поддерживающий его (надеюсь, это имеет смысл?) . Контроллер для этих динамических сегментов является контроллером массива, потому что модель для этих динамических сегментов является коллекцией:) (больше путаницы, пожалуйста, дайте мне знать)
App.SlidesController = Ember.ArrayController.extend();
К настоящему времени все вы поняли, что я в основном представляю кучу слайдов внутри карусели. И они динамически поддерживаются в collectionView, устанавливая свойство
contentBinding:'controller' // property set in CarouselView, controller corresponds to SlidesController
Путаница начинается сейчас. Я хочу добавить слайд к существующему набору слайдов. Поэтому я предоставляю кнопке действие: "добавить" target = "view"
В SlidesView
actions:{
add: function(){
var carouselView = this.get('childViews')[0];
// SlidesView has carouselView and another view as it's child, hence this.get('childViews')[0] is carouselView
var newCard = carouselView.createChildView(App.SlideView.extend());
carouselView.get('childViews').pushObject(newCard);
}
}
Вышеуказанный кусок кода отстой и причиняет мне боль. Я хочу в принципе добавить новый SlideView в мою коллекцию CarouselView программно по нажатию кнопки. Но, очевидно, Эмбер рекомендует, чтобы childViews не манипулировали напрямую, и я должен вместо этого изменить базовый контент. В моем console.log говорится, что манипулирование childViews устарело и т. Д.
Итак, по сути, мне нужно добавить что-то к своему контенту в мой контент SlidesController? Тем не менее, я не хочу добавлять что-то к контенту, это просто мягкое добавление, которое предоставляет пользователю слайд, чтобы он мог по своему усмотрению редактировать или добавлять что-то. Он всегда может отказаться от этого. Сложное добавление, которое потребует от меня сохранения нового слайда в БД, произойдет, когда пользователь решит сохранить эту информацию.