Ember.js Ember CollectionView-删除项目视图
我很难找到答案,所以也许我做错了。我有一个集合视图和一个项目视图类。每个项都有一个delete按钮,它引用操作“removietem”。这确实会删除该项,但我需要返回到集合视图内容,以便使用API调用发布更新的数组Ember.js Ember CollectionView-删除项目视图,ember.js,collectionview,Ember.js,Collectionview,我很难找到答案,所以也许我做错了。我有一个集合视图和一个项目视图类。每个项都有一个delete按钮,它引用操作“removietem”。这确实会删除该项,但我需要返回到集合视图内容,以便使用API调用发布更新的数组 App.WatchlistTilesView.Collection = Ember.CollectionView.extend({ tagName: "ul", itemViewClass: Ember.View.extend({ attributeBindings:
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>
...
"),
})
});
App.WatchlistTilesView.Collection=Ember.CollectionView.extend({
标记名:“ul”,
itemViewClass:Ember.View.extend({
属性索引:“角色”,
角色:“瓷砖”,
类名:[“平铺”],
removietem:function(){
这个。删除();
},
templateStock:Ember.handlebar.compile(“
删除
...
"),
})
});
编辑:
我找到了这个问题的答案。集合视图上有一个属性需要由item类访问。我可以通过这个.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);
}
});
App.WatchlistTilesView.Collection=Ember.CollectionView.extend({
标记名:“ul”,
itemViewClass:Ember.View.extend({
属性索引:“角色”,
角色:“瓷砖”,
类名:[“平铺”],
watchlistBinding:“parentView.watchlist”
removeItem:->
@删除()
监视列表=@get(“监视列表”)
@获取(“控制器”).removeSymbol(@content,watchlist)
templateStock:Ember.handlebar.compile(“
删除
...
"),
})
});
App.WatchlistTilesController=Ember.Controller.extend({
帐户:空,
观察列表:空,
removeSymbol:函数(条目、监视列表){
watchlist.entries.removeObject(条目);
返回WatchlistService.edit(this.account,watchlist);
}
});
您使用的是哪个版本的Ember?无论如何,我们的想法是将一个事件发送到路由器,并将该项作为上下文。然后,路由器从阵列中删除该对象,因此CollectionView
将在没有先前删除的ItemMember v1.0.pre-279-gb1c0b4c的情况下重新提交。集合是通过API调用用户帐户中的值来构建的,因此需要使用更新的数组来更新帐户。我不确定您的Ember版本中包含哪些内容,但您可以将操作
重定向到路由器(或者1.0-pre
版本不允许的控制器)以view.content
作为上下文。然后,路由器从数组中删除对象(控制器content
)!您可以将编辑作为问题的答案,而不是编辑问题;)