javascript - 从集合中删除时,从 View 中删除项目

标签 javascript jquery backbone.js

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

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

它将像这样附加 View 对象:

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

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

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

我为删除功能尝试了几种方法,但没有一个能完成这项工作。 removeOne 函数被正确触发,但正如我所说,没有效果。如何从前端删除 View 对象?

我已经尝试过:

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

XUView.remove(as);

this.collection.remove(as);

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

最佳答案

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

在 addOne 函数中,您可以设置模型上的 View

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();
}

关于javascript - 从集合中删除时,从 View 中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28520772/

相关文章:

javascript - 是否可以从 javascript if 语句中将变量传递/比较到 SQL 数据库?

javascript - 如何从 IE 列表中删除 list it (li) 元素

javascript - 从ListView中获取选定的记录

javascript - 如何将 HTTP url 与 Node ESM 模块加载器一起使用?

javascript - 如何在滑动 slider 中单击箭头1和滑动3时使slidesToScroll?

javascript - 将对象数组转换为对象

javascript - 从 jQuery 中的字符串获取所有 anchor

javascript - 将多个 Backbone View $el 合并到一个 jQuery 对象中

javascript - Backbone : Delete won't bind?

javascript - 通过主干路由器查看更改不断恢复到主页