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

Apo*_*jat 5 javascript callback backbone.js

在我的应用中,有不同的用户帐户.我要做的是,显示一个loader.gif直到.fetch()从资源URL获取内容的时间+呈现视图并隐藏loader何时完成提取.

现在,当用户登录时,他的TODO项目列表将Todos.fetch在成功回调中获取并loader.gif淡出.

$("#app").hide();
$(".loader").show();
Todos.fetch({
    success: function(){
            $("#app").show();
            $(".loader").hide();
        }
});
Run Code Online (Sandbox Code Playgroud)

除了那些没有Todo项目的用户之外,这适用于所有用户.对于这些用户,不会触发成功回调并loader.gif保持不变.还有其他方法可以隐藏loader.gif吗?


在我看来,success只有在将一个模型添加到集合中时才会调用函数.如果没有要添加到集合中的任何内容,success则不会调用.

Ere*_*bih 19

BackboneJS获取委托进行同步.sync返回一个jqXHR对象供您自己使用.

你可以:

Todos.fetch({
    success: function(){
            $("#app").show();
            $(".loader").hide();
        }
}).always(function() { $(".loader").hide() });
Run Code Online (Sandbox Code Playgroud)

您可以在此博客文章中阅读更多相关信息.

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