【问题标题】:Knockout.js containerless "foreach" not working with <table>Knockout.js 无容器“foreach”不适用于 <table>
【发布时间】:2011-12-28 06:57:57
【问题描述】:

此代码抛出错误(在 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 与表格一起使用。有什么我做错了吗?是bug吗?

【问题讨论】:

    标签: syntax knockout.js


    【解决方案1】:

    这与浏览器自动插入tbody 标签有关,这会在 cmets 中造成不匹配。呈现的输出将如下所示:

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

    Steve 确实在尝试纠正 KO 中不匹配的标签方面做了一些工作,但对您来说最简单的方法是自己添加 tbody 或添加 tbody 并将绑定放在上面。

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

    如果需要,一个表可以有多个tbody 标签是合法的。

    【讨论】:

    • 谢谢!这让事情变得很清楚。以后我一定会更仔细地检查实际的标记。
    • 正如 RP 所说,拥有多个 tbody 标签是合法的。对行进行分组很有用,here 是更多信息。
    猜你喜欢
    • 2012-07-28
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 2020-01-30
    • 2021-05-19
    相关资源
    最近更新 更多