我期待菊花链Backbone请求,其中第二个请求取决于第一个请求的结果。我该怎么做正确的方法? jQuery $.done()
似乎不适合我正确的方式。为了更好地解释,这是一个假设的例子:
我有一份供应商清单,每个供应商都有一份供应给公司的零件清单。我想获取所有供应商,然后获取此供应商列表的所有部分。这是一个示例代码,我试图使用没有运气。
var App = {};
App.Supplier = Backbone.Model.extend({ });
App.Part = Backbone.Model.extend({ });
App.Suppliers = Backbone.Collection.extend({
model: App.Supplier
});
App.Parts = Backbone.Collection.extend({
model: App.Part
})
var suppliers = new App.Suppliers;
var parts = new App.Parts;
var supplier_request = suppliers.fetch();
supplier_request.done(function(){
parts.fetch_by_suppliers([supplier1, supplier2, ...]);
});
第二个请求在收到第一个回复后立即触发,在App.Supplier
模型实例化之前,会发生什么情况。结果是 - 供应商列表保持为空,第二个请求使用空的供应商列表启动。
答案 0 :(得分:2)
为了完成菊花链,您需要将成功回调传递给fetch
方法。 success
回调作为参数传递(collection, response)
。您可以通过以下方式重写示例中的代码:
...
suppliers.fetch({success:
function(collection, response){
parts.fetch_by_suppliers(collection);
}
});
Backbone.js文档很好地解释了它。 http://documentcloud.github.com/backbone/#Collection-fetch
希望这有助于你!