在我的应用中,有不同的用户帐户。我要做的是,显示loader.gif
直到.fetch()
从资源网址获取内容+呈现视图并在提取完成时隐藏loader
。
现在,当用户登录时,他的TODO项目列表
由Todos.fetch
提取并在成功回调时,loader.gif
淡出。
$("#app").hide();
$(".loader").show();
Todos.fetch({
success: function(){
$("#app").show();
$(".loader").hide();
}
});
除了那些没有Todo
项的用户外,这适用于所有用户。对于这些用户,不会触发成功回调,并且loader.gif
会保留。有没有其他方法可以隐藏loader.gif
?
在我看来,即使将单个模型添加到集合中,也只调用success
函数。如果没有要添加到集合中的任何内容,则不会调用success
。
答案 0 :(得分:19)
BackboneJS提取代理进行同步。 sync返回一个jqXHR对象供您自己使用。
你可以:
Todos.fetch({
success: function(){
$("#app").show();
$(".loader").hide();
}
}).always(function() { $(".loader").hide() });
您可以在this blog post中了解更多相关信息。
除此之外,请确保您的服务器在集合为空时返回有效的json。如果响应不是有效的json,则会出现故障。