这段代码引发错误(在Chrome中):“找不到匹配的结束注释标记:ko foreach:MyPlans”:
<table>
<!-- ko foreach: MyPlans -->
<tr>
<td>Test</td>
</tr>
<!-- /ko -->
</table>
如果我改用列表,则一切正常:
<ul>
<!-- ko foreach: MyPlans -->
<li>
Test
</li>
<!-- /ko -->
</ul>
我想将无容器的foreach与表一起使用。我做错什么了吗?是虫子吗?
最佳答案
这与浏览器自动插入tbody
标签有关,这会导致注释不匹配。呈现的输出将如下所示:
<table>
<!-- ko foreach: MyPlans -->
<tbody>
<tr>
<td>Test</td>
</tr>
<!-- /ko -->
</tbody>
</table>
史蒂夫(Steve)确实做了一些工作来尝试纠正KO中不匹配的标签,但是最简单的操作是您自己添加
tbody
或添加tbody
并对其进行绑定(bind)。<table>
<tbody data-bind="foreach: MyPlans">
<tr>
<td>Test</td>
</tr>
</tbody>
</table>
如果有必要,一个表具有多个
tbody
标记是合法的。关于syntax - Knockout.js无容器 “foreach”不适用于<table>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8115896/