2

我的 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

混乱现在开始。我想在现有的一组幻灯片中添加一张幻灯片。所以我提供了一个带有操作的按钮:'add' target='view'

在幻灯片视图中,

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 集合中。但显然 Ember 建议不应该直接操作 childViews,我应该改为更改底层内容。它在我的 console.log 中声明不推荐使用 childViews 等。

所以基本上我需要在我的内容中添加一些内容到我的 SlidesController 内容中?但是,我不想在内容中添加一些东西,这只是一个软添加,即为用户提供一张幻灯片,以便他可以根据需要选择编辑或添加一些东西。他总是可以丢弃它。一旦用户决定保存此信息,就会出现需要我将新幻灯片保存到数据库的硬添加。

4

0 回答 0