2012-06-25 56 views
1

我在同一個表中有兩段代碼。一個看起來是這樣的:knockoutjs foreach不工作

<tr> 
    <th data-bind="text: tableHeaders()[0].title"></th> 
    <th data-bind="text: tableHeaders()[1].title"></th> 
    <th data-bind="text: tableHeaders()[2].title"></th> 
</tr> 

而其他看起來像這樣:

<tr data-bind="foreach: tableHeaders"> 
    <th data-bind="text: title"></th> 
</tr> 

第一個正確打印出來,而第二個不打印出任何東西。翻翻源代碼顯示

<tr data-bind="foreach: tableHeaders"></tr> 

我一直無法複製我的問題的jsfiddle(作品:http://jsfiddle.net/nnjEf/4/),所以這顯然是另一個問題。任何想法如何我可以解決問題?

+0

你可以發佈你的viewmodel。你的HTML是正確的。 – Tyrsius

+0

我添加了jsfiddle鏈接,但它在那裏工作正常。 – bdev

+1

檢查螢火蟲以查找錯誤。 – Wiz

回答

1

'Knockoutjs 2.0'(或其beta版本名稱中的1.3)首先引入了'控制流綁定'(即使用與HTML內聯的foreach)。你的jsfiddle也使用v2.0作爲框架。

沒有看到您的實際代碼是不可能的,但我懷疑是您使用的是不支持此功能的較低版本。如果您使用v1.2,那麼舊的方法可能會使用模板 - 例如

<tr data-bind="template:{name: 'tableHeadersTemplate', foreach: tableHeaders}"> 
</tr> 

<script type="text/html" id="tableHeadersTemplate">  
    <th data-bind="text: title"></th> 
</script> 

這也適用於v2.0及以上版本,但顯然會產生比您目前嘗試的方式多得多的標記。