2012-07-16 89 views
1

我疯了,试图为我的问题找到一个解决方案。我有一个JS对象,它有一个层次结构和层次结构的级别是未知的。利用JQuery的模板和淘汰赛JS的我能得到的树结构<ul> & <li>但我的要求是,为每一个孩子,我需要呈现在Table新因此,可以说我的结构是:递归tr与Knockout JS和Jquery模板

{ 
    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/

如果我使用ulli,我可以通过使用

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

但因为我的模板本身具有<tr>开始我不知道我怎么叫,而无需编写的节点,其中data-bind="template:{...}部分模板递归调用模板?最初的呼叫将工作,因为它在<tbody>上,但我不能在tbodytbody递归调用模板来呈现其他tr

我希望这个解释是足够的。让我知道你是否需要更多细节。任何帮助表示赞赏。

回答

3

您可以从该模板内部递归调用模板,与foreach的$ data上下文属性结合使用,您可以做你正在寻找的东西......我在解释事情时非常糟糕,所以我更新了你的jsfiddle做你正在寻找的,http://jsfiddle.net/xpsa4/5/

+0

这正是我所期待的。太感谢了。 – Wiz 2012-07-16 23:04:02