knockoutjs foreach不工作

时间:2012-06-25 15:54:26

标签: javascript html knockout.js knockout-2.0

我在同一个表中有两段代码。一个看起来像这样:

<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/)中复制我的问题,所以这显然是另一个问题。我还有什么想法可以排除故障吗?

1 个答案:

答案 0 :(得分:1)

首先在Knockoutjs 2.0(或其测试版名称中的1.3)中介绍了“控制流绑定”(即使用foreach内联HTML)。您的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及更高版本,但显然会产生比你当前尝试的方式更多的标记。