您可以将树建模为具有父子链接的项目集合。所以你的模型应该有这样的东西:
id: id,
parent_id: parent_id
然后使用 JS 中的递归函数调用从集合构建一棵树。这是一段实时代码:
function buildTree(branch, list) {
//recursively builds tree from list with parent-child dependencies
if (typeof branch == 'undefined') return null;
var tree = [];
for(var i=0; i<branch.length; i++)
tree.push( {
item: branch[i],
children: buildTree( list[ branch[i].id ], list)
});
return tree;
}
在使用 underscore.js(无论如何这是backbone.js的先决条件)通过parent_id调用函数组项目之前,然后调用:
var list = _.groupBy(arrayOfItems,'parent_id');
var tree = buildTree(list[0],list);
最后,再次使用递归函数调用渲染树(这里没有示例,但我相信您已经明白了)。
附言。如果您指定正确的parent_id,添加/保存项目应该不是问题。