您可以将树建模为具有父子链接的项目集合。所以你的模型应该是这样的:
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);
最后,再次使用递归函数调用树(这里没有例子,但我相信你有这个想法)。
PS。如果您指出正确的parent_id,则添加/保存项目不会成为问题。
叶元素是产品本身? – papdel
我没有想过这样做,但现在你提到它,它会使界面更加可用。我现在只是试图去管理类别层次结构。 –