这段代码引发错误(在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/

10-13 00:37