5

在我的应用程序中,有不同的用户帐户。我想要做的是,显示loader.gif直到时间.fetch()从资源 url 获取内容 + 渲染视图并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则不调用。

4

1 回答 1

19

BackboneJS 获取要同步的委托。sync 返回一个 jqXHR 对象供您自己使用。

你可以:

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

您可以在此博客文章中了解更多信息。

除此之外,请确保您的服务器在集合为空时返回有效的 json。如果响应不是有效的 json,您将失败。

于 2012-11-13T15:19:53.583 回答