0

これに対する答えを見つけるのに苦労しているので、おそらく私はそれをすべて間違っています。アイテム ビュー クラスを持つコレクション ビューがあります。各アイテムには、アクション「removeItem」を参照する削除ボタンがあります。これによりアイテムは削除されますが、更新された配列を API 呼び出しで投稿するには、コレクション ビューのコンテンツを参照する必要があります。

App.WatchlistTilesView.Collection = Ember.CollectionView.extend({
  tagName: "ul",
  itemViewClass: Ember.View.extend({
    attributeBindings: "role",
    role: "tile",
    classNames: ["tile"],

    removeItem: function() {
      this.remove();
    },

    templateStock: Ember.Handlebars.compile("
      <button {{action removeItem}}>Delete</button> 
      ...
    "),
  })
});

編集:

この特定の問題に対する答えを見つけました。コレクション ビューには、アイテム クラスからアクセスする必要があるプロパティがありました。this.get("parentView") でアクセスできました。また、removeItem アクションのターゲットとしてビューを追加する必要がありました。

次のようになります。

App.WatchlistTilesView.Collection = Ember.CollectionView.extend({
  tagName: "ul",
  itemViewClass: Ember.View.extend({
    attributeBindings: "role",
    role: "tile",
    classNames: ["tile"],
    watchlistBinding: "parentView.watchlist"

    removeItem: ->
      @remove()
      watchlist = @get("watchlist")
      @get("controller").removeSymbol(@content, watchlist)

    templateStock: Ember.Handlebars.compile("
      <button {{action removeItem target="view"}}>Delete</button>
      ...
    "),
  })
});

App.WatchlistTilesController = Ember.Controller.extend({
  account: null,
  watchlists: null,

  removeSymbol: function(entry, watchlist) {
    watchlist.entries.removeObject(entry);
    return WatchlistService.edit(this.account, watchlist);
  }
});
4

0 に答える 0