我在同一个表中有两段代码。一个看起来像这样:
<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 :(得分: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及更高版本,但显然会产生比你当前尝试的方式更多的标记。