Knockout.js无容器&#34; foreach&#34;不使用<table> </table>

时间:2011-11-14 00:11:48

标签: syntax knockout.js

此代码抛出错误(在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。有什么我做错了吗?这是一个错误吗?

1 个答案:

答案 0 :(得分:89)

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

<table>
  <!-- ko foreach: MyPlans -->
  <tbody>
    <tr>
      <td>Test</td>
    </tr>
  <!-- /ko -->
  </tbody>
</table>

史蒂夫确实尝试纠正KO中不匹配的标签,但最简单的方法是自己添加tbody或添加tbody并对其进行绑定。

<table>
  <tbody data-bind="foreach: MyPlans">
    <tr>
      <td>Test</td>
    </tr>
  </tbody>
</table>

如果需要,表格有多个tbody标记是合法的。