【发布时间】:2014-03-26 18:46:22
【问题描述】:
您有一个具有id、parentid 和message 属性的项目列表。 parentid 引用同一列表中的其他项目。嵌套级别没有限制。你将如何实现它?
换句话说,如何服用:
var data = [
{
id: 1,
parentid: 0,
message: "I'm 1, and I have no parent."
}, {
id: 2,
parentid: 1,
message: "I'm 2, and 1 is my parent."
}, {
id: 3,
parentid: 1,
message: "I'm 3, and 1 is my parent."
}, {
id: 4,
parentid: 0,
message: "I'm 4, and I have no parent."
}, {
id: 5,
parentid: 1,
message: "I'm 5, and 2 is my parent."
}
];
然后把它变成这样:
<ul>
<li>
I'm 1, and I have no parent.
<ul>
<li>
I'm 2, and 1 is my parent.
<ul>
<li>
I'm 5, and 2 is my parent.
</li>
</ul>
</li>
<li>
I'm 3, and 1 is my parent.
</li>
</ul>
</li>
<li>
I'm 4, and I have no parent.
</li>
</ul>
有没有一种很好又快速的方法可以在模板中做到这一点?无需遍历整个数组、构建一个新数组并渲染它?
甚至,递归渲染自身直到什么都没有的模板的最佳实现是什么?
【问题讨论】:
-
假设最后一个数据项
id: 5,应该是parentid: 2,而不是parentid: 1 -
想要解决这个问题,但“编辑必须至少有 6 个字符”:/
标签: javascript templates handlebars.js ractivejs