假设您的数据结构看起来像这样
[
{
title: "item 1",
nodes: [
{title: "item a",
nodes: [
{title: "item i"},
{title: "item ii"}
]
},
{title: "item b"
}
]
},
{
title: "item 2"
}
]
您可以通过覆盖模型的 parse 方法来设置层次结构:
var Node = Backbone.Model.extend({
parse: function(data) {
this.nodes = new Nodes(data.nodes, {parse: true});
return _.omit(data, 'nodes');
}
});
var Nodes = Backbone.Collection.extend({
model: Node
});
var c = new Nodes(data_structure, {parse: true});
// parse: true is only needed if you pass the data as an argument
Node.parse
从数据哈希中提取nodes
属性以在对象上构建自定义属性,然后返回其余属性以让 Backbone 处理其他属性。然后,您可以使用 访问该集合model.nodes
。还有一个可以玩的小提琴http://jsfiddle.net/C8HGY/