jquery - Backbone.js 中菊花链依赖的 AJAX 请求

标签 jquery backbone.js

我正在寻找菊花链主干请求,其中第二个请求依赖于第一个请求的结果。我该如何以正确的方式做到这一点? 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 模型之前立即触发第二个请求。结果是——供应商列表保持为空,第二个请求以空的供应商列表触发。

最佳答案

为了完成这种菊花链,您需要将成功回调传递给 fetch 方法。 success 回调作为参数传递给 (collection, response)。您可以按以下方式重写示例中的代码:

...

suppliers.fetch({success: 
  function(collection, response){
     parts.fetch_by_suppliers(collection);
  }
});

Backbone.js 文档对此进行了很好的解释。 http://documentcloud.github.com/backbone/#Collection-fetch

希望这对你有帮助!

关于jquery - Backbone.js 中菊花链依赖的 AJAX 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10082712/

相关文章:

javascript - ListenTo在Backbone中的实现

javascript - 使用 Css 和 jQuery 在悬停时更改文本

javascript - 尝试从链接中删除字符串,但它不起作用

javascript - jquery 图片库 - 第一张图片不褪色

javascript - 主干听嵌套模型/集合?

javascript - 主干 - 未为模型定义 model.destroy() 函数

javascript - jQuery - 告诉页面何时滚动到并正在查看特定的 DIV

javascript - 如何使用jquery选择没有任何类或id的父元素?

javascript - jQuery 以正确的顺序插入元素 vs detach().sort()?

node.js - 将 mers 与backbone.js 结合使用