Backbone fetch()成功回调不起作用

时间:2012-11-13 14:54:50

标签: javascript backbone.js callback

在我的应用中,有不同的用户帐户。我要做的是,显示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

1 个答案:

答案 0 :(得分:19)

BackboneJS提取代理进行同步。 sync返回一个jqXHR对象供您自己使用。

你可以:

Todos.fetch({
    success: function(){
            $("#app").show();
            $(".loader").hide();
        }
}).always(function() { $(".loader").hide() });

您可以在this blog post中了解更多相关信息。

除此之外,请确保您的服务器在集合为空时返回有效的json。如果响应不是有效的json,则会出现故障。