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'

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);
   }

}

上記のコードはひどいもので、私をひどく傷つけます。基本的に、ボタン トリガー時にプログラムで CarouselView コレクションに新しい SlideView を追加したいと考えています。しかしどうやら Ember は、childView を直接操作するべきではなく、代わりに基になるコンテンツを変更することを推奨しているようです。私のconsole.logには、childViewsの操作は非推奨であるなどと記載されています。

つまり、本質的に、コンテンツに何かを追加して SlidesController コンテンツに追加する必要がありますか? ただし、コンテンツに何かを追加したくはありません。これは、必要に応じて編集または追加を選択できるように、ユーザーにスライドを提供する単なるソフト追加です。彼はいつでもそれを捨てることができます。ユーザーがこの情報を保存することを決定すると、新しいスライドを DB に保持する必要があるハード アドが発生します。

4

0 に答える 0