Knockout.js无容器"foreach"无法使用<table>

Jag*_*Jag 52 syntax knockout.js

此代码抛出错误(在Chrome中):"无法找到匹配的结束注释标记:ko foreach:MyPlans":

<table>
  <!-- ko foreach: MyPlans -->
    <tr>
      <td>Test</td>
    </tr>
  <!-- /ko -->
</table>
Run Code Online (Sandbox Code Playgroud)

如果我改用列表,一切正常:

<ul>
  <!-- ko foreach: MyPlans -->
    <li>
      Test
    </li>
  <!-- /ko -->
</ul>
Run Code Online (Sandbox Code Playgroud)

我想使用带有桌子的无容器foreach.有什么我做错了吗?这是一个错误吗?

RP *_*yer 90

这与浏览器tbody自动插入标签这一事实有关,这会在评论中产生不匹配.渲染的输出将如下所示:

<table>
  <!-- ko foreach: MyPlans -->
  <tbody>
    <tr>
      <td>Test</td>
    </tr>
  <!-- /ko -->
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

史蒂夫确实在尝试纠正KO中不匹配的标签方面做了一些工作,但最简单的事情就是添加tbody自己或添加tbody并绑定它.

<table>
  <tbody data-bind="foreach: MyPlans">
    <tr>
      <td>Test</td>
    </tr>
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

tbody如有必要,表有多个标签是合法的.