データ構造が次のようになっていると仮定します
[
{
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/で遊ぶフィドル