您可以將樹建模爲具有父子鏈接的項目集合。所以你的模型應該是這樣的:
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
我沒有想過這樣做,但現在你提到它,它會使界面更加可用。我現在只是試圖去管理類別層次結構。 –