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? Тем не менее, я не хочу добавлять что-то к контенту, это просто мягкое добавление, которое предоставляет пользователю слайд, чтобы он мог по своему усмотрению редактировать или добавлять что-то. Он всегда может отказаться от этого. Сложное добавление, которое потребует от меня сохранения нового слайда в БД, произойдет, когда пользователь решит сохранить эту информацию.

0 ответов

Другие вопросы по тегам