Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js Ember CollectionView-删除项目视图_Ember.js_Collectionview - Fatal编程技术网

Ember.js Ember CollectionView-删除项目视图

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:

我很难找到答案,所以也许我做错了。我有一个集合视图和一个项目视图类。每个项都有一个delete按钮,它引用操作“removietem”。这确实会删除该项,但我需要返回到集合视图内容,以便使用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> 
      ...
    "),
  })
});
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
)!您可以将编辑作为问题的答案,而不是编辑问题;)