これに対する答えを見つけるのに苦労しているので、おそらく私はそれをすべて間違っています。アイテム ビュー クラスを持つコレクション ビューがあります。各アイテムには、アクション「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);
}
});