我是 Javascript 新手,在阅读了几个示例后,我仍然无法做到这一点。我知道我需要使用回调,但我的代码不起作用。这是我尝试过的
$(this.el).html(this.template(), {
success: function() {
return this.collection.each(this.appendEntry);
}
});
success
甚至从未被调用
我是 Javascript 新手,在阅读了几个示例后,我仍然无法做到这一点。我知道我需要使用回调,但我的代码不起作用。这是我尝试过的
$(this.el).html(this.template(), {
success: function() {
return this.collection.each(this.appendEntry);
}
});
success
甚至从未被调用
好吧,如果你想在异步任务完成时做一些事情,你可以使用 Promise。例如jQuery
:
$.when( myAsyncTask() )
.then(function(){
console.log("Executed when myAsyncTask() is done..");
});
如果您只想在成功获取 Collection 数据时执行某些操作,请使用success()
a 的回调方法Backbone.Collection.fetch()
myCollection.fetch({
success: function(data){
console.log("Your Collection data is available now.");
}
});
$(this.el).html()
(或者,更简洁地说,this.$el.html()
)是一个同步函数调用。在该函数完成之前,不会执行其他 Javascript 代码。
this.$el.html(this.template());
this.collection.each(this.appendEntry);
将按顺序执行这两个语句。
您是否偶然template()
以某种方式覆盖了 Underscore 函数,在这种情况下this.template()
变成了异步调用?如果是这样,您需要为您的模板代码添加回调支持并推迟执行html()
直到它完成。