使用骨干集合和返回对象的休息路径

时间:2015-07-23 01:27:28

标签: rest backbone.js

查看示例代码

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

accounts.fetch();

如果路由返回数组

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

但我正在使用的REST服务返回一个像这样的对象

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

如何告诉Backbone.Collection该集合位于items

1 个答案:

答案 0 :(得分:2)

解析功能似乎合适。

从文档中: http://backbonejs.org/

"从API获取原始JSON数据时,Collection会自动使用格式化为数组的数据填充自己,而Model将自动填充格式为对象的数据:

[{" id":1}] .....用一个模型填充Collection。 {" id":1} .......用一个属性填充模型。 但是,遇到以不同于Backbone所期望的格式返回数据的API相当普遍。例如,考虑从返回包含在元数据中的真实数据数组的API中获取Collection:

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

在上面的示例数据中,Collection应该使用" books"数组而不是根对象结构。使用返回(或转换)API数据的所需部分的解析方法可以轻松地协调这种差异:

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

"

希望它有所帮助。