jquery - 如何使用 Backone 销毁 View 及其内部的任何模型

标签 jquery backbone.js

我有一个主干 View ,里面有一个模型。当我在 View 上调用remove()时,设置到已删除 View 内模型的事件保持事件状态。我尝试了 model.destroy() 但据我所知,这只适用于服务器端,不适用于 View 内的模型。或者也许我错了。

此外,当我在 View 上调用删除时,我认为它只是获取 View el 属性并对其调用删除。如果是这样,您可以监听一个回调来销毁 View 内模型上的绑定(bind)事件。

最佳答案

您可以通过调用model.unbind()来取消绑定(bind)模型上的所有事件。因此,您可以像这样重写 View 上的 remove 方法:

remove: function() {
    this.model.unbind();
    Backbone.View.prototype.remove.call(this);
}

实际上破坏模型有点棘手。如果模型位于集合中,您可以在调用 .unbind() 之前尝试调用 model.trigger('destroy') - 这将从任何集合中删除该模型包含它。然后,您可以将 view.model 设置为 null,从 View 中删除引用,并希望释放模型以进行垃圾回收。您还可以调用 model.clear() 来清除其字段,但这可能不是必需的。因此,完整的 remove 函数可能如下所示:

remove: function() {
    this.model.trigger('destroy');
    this.model.unbind();
    this.model = null;
    Backbone.View.prototype.remove.call(this);
}

关于jquery - 如何使用 Backone 销毁 View 及其内部的任何模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7908028/

相关文章:

javascript - 如何将 2 个处理程序附加到同一个事件?

jquery - 检查页面加载

javascript - 尝试添加 slideToggle() 函数但它不起作用

javascript - ajax返回Html

jquery - 如何将类应用到 div 上进行动画处理

javascript - 浏览器和 Nginx 之间的 HTTP POST 神秘约 1 分钟延迟

backbone.js - 两个模型之间的关系模型 : null value

javascript - 使用 Backbone.js 和 Express.js 构建应用程序

javascript - 如何在关闭jquery ui对话框后删除内容

javascript - 在主干中获取单个模型,为什么这不起作用?