Backbone有办法组合ajax请求吗?

Does Backbone have a way to combine ajax requests?

本文关键字:请求 ajax 组合 Backbone      更新时间:2023-09-26

例如,在某个事件之后,我做:

render: function () {
    new FavoritesView({el: $A.el('#mm'));
    new FeedView({el: $A.el('#at_view'));
    new AccountView();
}

创建3个视图和3个ajax请求。以前我使用的框架只使用一个,因为它结合了请求。

有办法做到这一点在骨干?

您不需要提供很多细节或代码,但是如果有一个请求来检索多个对象(根据您以前的框架),那么该请求很可能不是真正的REST接口。默认情况下,Backbone期望为其模型(以及集合)使用REST接口(ruby风格的),因此没有办法实现您想要的"开箱即用"。

但是,

Backbone很容易扩展,您当然可以覆盖模型/集合的fetch方法来使用非rest API。更好的方法可能是为三个模型/集合发出自己的AJAX请求,然后在创建模型/集合时将适当的数据提供给模型/集合,从而完全避免使用Backbone fetch。比如:

render: function() {
    $.getJSON("url/to/aggregated/data", function(data) {
        var favorites = new Favorites(data.favorites);
        var feed = new Feed(data.feed);
        var account = new Account(data.account);
        new FavoritesView({el: $A.el('#nm'), collection: favorites);
        new FeedView({el: $A.el('#at_view'), model: feed);
        new AccountView({model: account});
    });
}