1

我要疯了,试图为我的问题找到解决方案。我有一个具有层次结构的 JS 对象,并且层次结构的级别是未知的。使用 JQuery 模板和 Knockout JS 我可以使用<ul>&获得树结构,<li>但我的要求是,对于每个孩子,我需要在 a 中渲染一个新RowTable所以可以说我的结构是:

{
    Name: 'First', 
    Total: 100,
    Set: [
        { 
            Name: 'First_1', Total: 30,
            Set: [{Name: 'First_1_1', Total: 10}, {Name: 'First_1_2', Total: 20}]  
        },
        { Name: 'First_2', Total: 0 }
    ]
}

该表应如下所示:

<table width="100%">
    <tbody>
    <tr><th>Name</th><th>Total</th></tr>
    <tr><td>First</td><td>100</td></tr>
    <tr><td>First_1</td><td>30</td></tr>
    <tr><td>First_1_1</td><td>10</td></tr>
    <tr><td>First_1_2</td><td>20</td></tr>
    <tr><td>First_2</td><td>0</td></tr>
    </tbody>
</table>

以下是我想出的小提琴:http: //jsfiddle.net/paragnair/xpsa4/

如果我正在使用ul li,我可以使用递归调用模板

<ul data-bind="template: {name: 'tree1', foreach: Set}"></ul>

但是由于我的模板本身以 a 开头,所以<tr>我不确定如何在不使用该data-bind="template:{...}部分编写节点的情况下调用模板?初始调用将起作用,因为它在<tbody>但我不能在 atbodytbody递归调用模板以呈现 other tr

我希望这个解释是足够的。如果您需要更多详细信息,请告诉我。任何帮助表示赞赏。

4

1 回答 1

3

您可以从该模板内部递归调用一个模板,该模板与 foreach 的 $data 上下文属性相结合,可以让您做您正在寻找的事情...我不擅长解释事情,所以我更新了您的 jsfiddle 来做您想做的事重新寻找,http://jsfiddle.net/xpsa4/5/

于 2012-07-16T18:48:12.333 回答