2011-09-14 25 views
4

我想這些列的表:如何呈現表與一些固定的和一些動態列

  • 【品名】
  • [俱樂部]
  • [Dynamic1]
  • [ Dynamic2]
  • [Dynamic3]
  • 等等等等

我嘗試這樣做:

<table> 
    <tbody data-bind="template: { name: 'rowTmpl', foreach: runners }"> 
    </tbody> 
</table> 
<script id="rowTmpl" type="text/html"> 
    <tr data-bind="template: { name: 'colTmpl', foreach: radios }" > 
     <td data-bind="text: name"></td> 
     <td data-bind="text: club"></td> 
    </tr> 
</script> 
<script id="colTmpl" type="text/html"> 
     <td>aa</td> 
</script> 
@section Scripts{ 
    <script src="/Scripts/knockout-1.3.0beta.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     var vm = { 
      id: 1, 
      name: 'H21', 
      radios: ['2km', '4km', 'mål'], 
      runners: ko.observableArray([ 
       { name: 'Mikael Eliasson', club: 'Göteborg-Majorna OK', radios: ko.observableArray([{}, {}, {}]) }, 
       { name: 'Ola Martner', club: 'Göteborg-Majorna OK', radios: ko.observableArray([{}, {}, {}]) } 
      ]) 
     }; 

     ko.applyBindings(vm); 
    </script> 
} 

我的問題是內部colTmpl的TDS不databoud,它是空的,放在與文本「AA」第三列之後。請參閱fiddle

回答

7

如果您正在使用1.3 beta(你的小提琴被引用最新版本),那麼你可以這樣做:

<table> 
    <tbody data-bind="foreach: runners"> 
     <tr> 
      <td data-bind="text: name"></td> 
      <td data-bind="text: club"></td> 
      <!-- ko foreach: radios--> 
      <td>aa</td> 
      <!-- /ko --> 
     </tr> 
    </tbody> 
</table> 

樣品這裏jQuery模板,那麼你會想通過templateOptions將數組中的第一個項目傳遞給模板,並執行{{if}}來檢查您是否在第一個無線電中並呈現兩個單元格。 jQuery模板中的另一個選項是圍繞您的動態單元使用{{each}},而不是父級上模板綁定的foreach選項。如果您的專欄經常動態變化,您會失去一些效率。如有必要,我可以提供這兩個選項的示例。

+0

從1.3開始我還沒有找到,比我想出來的要好得多。 –

+0

謝謝!這真棒,是的,我正在使用1.3測試版。 –

0

這是因爲<tr data-bind="template: { name: 'colTmpl', foreach: radios }" >的內容正被您指定的模板取代。

如果你不是做:

<script id="rowTmpl" type="text/html"> 
<tr> 
    <td data-bind="text: name"></td> 
    <td data-bind="text: club"></td> 
    <td data-bind="template: { name: 'colTmpl', foreach: radios }" ></td> 
</tr> 
</script> 
<script id="colTmpl" type="text/html"> 
    <span> . aa . </span> 
</script> 

,它將使。如果您需要在此之前有做1.3 http://jsfiddle.net/rniemeyer/bd7DT/

相關問題