gpt4 book ai didi

backbone.js:调用 collection.reset() 是否也会删除模型?

转载 作者:行者123 更新时间:2023-12-02 21:50:22 25 4
gpt4 key购买 nike

我在主干文档中读到调用collection.reset()会清除集合。我想知道它是否也会删除模型,或者它们是否继续存在于内存中?

如果它们没有被删除,是否有一种更简单的方法可以删除集合中的所有模型,而无需迭代模型并调用 model.remove()

最佳答案

您可以监听模型中的 reset 事件,并进行清理和 this.destroy() 作为响应。这就是事件 Hook 的用途。请参阅http://backbonejs.org/#Events-catalog

注意:您绝对不应更改或重写以下划线前缀的任何方法或属性,例如 _removeReference。下划线意味着它旨在作为内部方法或属性,并且内部实现可能会发生变化(它们的 API 被认为是不稳定的)。升级 Backbone 可能会破坏任何依赖下划线前缀方法的代码,即使该版本被宣传为向后兼容的更改。

我知道你的问题说“不迭代”,但这确实是处理这个问题的最可靠的方法。考虑这样一种情况:模型已从一个集合移动到另一个集合,但它仍在监听第一个集合的 reset 事件(因为六个月后程序员没有注意到该连接)。

现在,当第一个集合被重置时,移动的模型将被销毁。哎呀!

如果您的 API 上没有端点来批量删除 API 服务器上集合中的所有对象(这通常是处理方式),则迭代集合可能是处理此问题的最佳方法。

幸运的是,迭代非常简单:

destroyAll: function () {
var promises = [];

while(this.models.length > 0) {
promises.push( this.models[0].destroy() );
}

// handle errors communicating with the server
$.when(promises).fail(function (response) {
this.trigger('syncError',
response);
}.bind(this));
}

关于backbone.js:调用 collection.reset() 是否也会删除模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7874339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com