gpt4 book ai didi

javascript - Backbone.js fetch问题(无法立即刷新数据)

转载 作者:可可西里 更新时间:2023-11-01 01:37:45 25 4
gpt4 key购买 nike

我有这样的代码:

var MyModel = Backbone.Model.extend();

var MyCollection = Backbone.Collection.extend({
url: '/url/',
model: MyModel
});
var coll = new MyCollection();

url 正确并返回正确的 json。但是如果我尝试使用下一个代码:

$('#fetch').click(function(){
coll.fetch();
console.log(coll.toJSON());
});
  • 它仅在第二次点击后显示数据(我在第一次点击后看到的 firebug 中的 http 响应)。好像数据没有及时刷新。

如果我将每个语句放在不同的事件中,它就可以正常工作。但是我需要立即知道集合的长度。如何做到这一点?

最佳答案

请记住,fetch 是对服务器的异步调用。要使您的代码按预期工作,请创建一个 success 函数,Backbone.Collection 可以在从服务器刷新其内容后调用该函数:

$('#fetch').click(function(){
coll.fetch({
succcess: function() {
console.log(coll.toJSON());
}
});
});

显然,您的应用程序不需要真正调用 console.log,因此更真实的示例将使用主干的事件绑定(bind),如下所示:

coll.bind('refresh', someFunction);
coll.fetch();

使用这种方法,backbone 将在集合刷新时调用 someFunction。这非常有用,尤其是当 someFunction 是您要绑定(bind)集合的 View 的 render 函数时。

coll.bind('refresh', yourView.render);
coll.fetch();

关于javascript - Backbone.js fetch问题(无法立即刷新数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6048480/

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