我有这样的代码:
var MyModel = Backbone.Model.extend();
var MyCollection = Backbone.Collection.extend({
url: '/url/',
model: MyModel
});
var coll = new MyCollection();
网址正确,并返回正确的json。但是,如果我尝试使用下面的代码:
$('#fetch').click(function(){
coll.fetch();
console.log(coll.toJSON());
});
如果我将每个语句放在不同的事件中,它将正常工作。但是我需要立即知道收集的时间。这该怎么做?
最佳答案
请记住,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();