假设我有一个这样的JSON设置:
{
page:1,
items:[
{
name: 'item1',
id:1
},
{
name: 'item1',
id:2
},
{
name: 'item1',
id:3
}
]
}
并且这样的造型:
var Item = Backbone.Model.extend({
defaults: {name: "No name"}
});
var ItemCollection = Backbone.Collection.extend({
model: Item,
url: '/some/ajax/url',
});
获取此JSON之后,我怎么能映射设置为ItemCollection收集的项目,并添加页码为集合属性?
作为@asawyer提到的,你必须覆盖的解析方法,但你并不需要真正实例化的每个项目,骨干网可以为你做的,如果你回到项目的数组。
请参阅文件collection.parse
解析 collection.parse(response)
解析由骨干每当集合的模型是由服务器返回,在获取调用。 所述函数传递原始响应对象,并且应该返回模型的阵列属性被添加到集合。
您的代码可以写成
var ItemCollection = Backbone.Collection.extend({
model: Item,
url: '/some/ajax/url',
parse: function(data) {
this.page=data.page;
return data.items;
}
});
你需要重写解析
它最终会看起来像这样:
class Item extends Backbone.Model
defaults:
name: "No name"
class ItemCollection extends Backbone.Collection
model: Item
url: '/some/ajax/url'
parse: (data) ->
items = []
_.each data, (item) ->
newItem = new Item
id: item.id
name: item.name
items.push newitem
items
(CoffeeScript的,但很容易转化为直接的JavaScript)
您的其他选项的关系插件发现在:
https://github.com/PaulUithol/Backbone-relational
我从来没有使用它,但它应该做的解析映射的东西给你,我认为。