从集合中删除时从视图中删除项目

时间:2015-02-14 21:59:07

标签: javascript jquery backbone.js

我正在使用Backbone.js。我正在收听我收藏的“添加”事件

this.listenTo(this.collection, "add", this.addOne);

它将附加视图对象:

addOne: function (as) {
        var v = new XUView({model: as}).render();
        $(v.el).prependTo($('#object-list')).hide().fadeIn().slideDown();
}

现在,如果项目已从集合中删除,我想自动从视图中删除对象。我在听“删除”事件:

this.listenTo(this.collection, "remove", this.removeOne);

我尝试了删除功能的几件事,但没有人完成这项工作。 removeOne函数被正确触发,但正如我所说,没有效果。如何从前端删除视图对象?

我已经尝试过:

XUView.remove(XUView.where(as));

XUView.remove(as);

this.collection.remove(as);

this.collection.remove(this.collection.where(as));

1 个答案:

答案 0 :(得分:1)

您必须在集合和模型视图之间保留映射表。当基于该映射表触发remove事件时,您知道应该删除DOM中的哪个元素或者哪个是视图。

在addOne函数中,您可以在模型上设置视图

addOne: function (as) {
        var v = new XUView({model: as});
        v.render();
        as.view = v;
        $(v.el).prependTo($('#object-list')).hide().fadeIn().slideDown();
}

并删除功能

removeOne:function(model){
  model.view.remove();
}