gpt4 book ai didi

javascript - backbone.js collection.get() 未定义

转载 作者:行者123 更新时间:2023-11-29 17:22:45 24 4
gpt4 key购买 nike

我正在使用 Backbone,我有一个包含 7 个模型的集合。

我想抓取一个模型并将其从集合中拉出。但是,我尝试的所有操作都会返回 undefined

这是我填充集合的方式

var coll = new TestCollection();
coll.fetch();

一个简单的控制台日志调用显示该集合是从 JSON 文件填充的

child
_byCid: Object
_byId: Object
_onModelEvent: function () { [native code] }
_removeReference: function () { [native code] }
length: 7
models: Array[7]
__proto__: ctor

不过,为了从集合中获取其中一个模型,我尝试了一大堆方法,包括 coll.at(1)coll.get(1) 但每个都返回 undefined

有没有人有什么想法?

最佳答案

fetch方法是一个 AJAX 调用,这意味着它是异步的。您的 console.log 调用将实时引用放入控制台(因此它有点异步),因此您最终会得到以下事件序列:

  1. 您调用 coll.fetch()
  2. Backbone 发送一个 $.ajax 调用。
  3. 您调用 console.log(coll),控制台中会出现实时引用。
  4. 您调用 coll.at(1)coll.get(1) 但没有得到任何结果,因为 2 尚未从服务器还没有。
  5. 2 从服务器返回并填充您的收藏。
  6. 然后你去看看控制台,但是现在 coll 已经填充了,所以控制台中的 coll 引用包括 5< 中返回的模型/strong>.
  7. 困惑。

成功fetch触发一个 "reset" 事件,所以如果您想知道集合何时填充,您应该监听该事件:

coll.on('reset', this.some_method);

或者,对于一次性通知,您可以使用 success 回调:

coll.fetch({
success: function(collection, response) {
//...
}
});

在较新版本的 Backbone 中,如果需要重置事件,则需要将 reset: true 选项传递给 fetch:

coll.fetch({ reset: true }); // This will now trigger a 'reset' event

关于javascript - backbone.js collection.get() 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11548222/

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