将 backbone 集合与 returns 对象的休息路线一起使用

Using backbone collections with a rest route that returns an object

查看示例代码

var accounts = new Backbone.Collection;
accounts.url = '/accounts';

accounts.fetch();

如果路由 returns 数组

[{id:1, name:'bob'}, {id:2, name:'joe'}]

但是我正在使用的 REST 服务returns像这样的对象

{
  items: [{id:1, name:'bob'}, {id:2, name:'joe'}],
  page: 1,
  href: '/acounts'
}

如何告诉 Backbone.Collection 集合在 items 中?

解析函数似乎很合适。

来自文档: http://backbonejs.org/

“当从 API 中获取原始 JSON 数据时,集合将自动使用数组格式的数据填充自身,而模型将自动使用对象格式的数据填充自身:

[{"id": 1}] ..... 用一个模型填充集合。 {"id": 1} ....... 用一个属性填充模型。 但是,经常会遇到 API 的 return 数据格式与 Backbone 预期不同的情况。例如,考虑从 API 中获取一个集合,其中 return 是包裹在元数据中的真实数据数组:

{
  "page": 1,
  "limit": 10,
  "total": 2,
  "books": [
    {"id": 1, "title": "Pride and Prejudice"},
    {"id": 4, "title": "The Great Gatsby"}
  ]
}

在上面的示例数据中,集合应该使用 "books" 数组而不是根对象结构来填充。使用 returns(或转换)API 数据的所需部分的解析方法可以很容易地协调这种差异:

var Books = Backbone.Collection.extend({
  url: '/books',
  parse: function(data) {
    return data.books;
  }
});

"

希望对您有所帮助。