无法找到Virtual Binding的结束注释标记

时间:2013-11-29 14:58:22

标签: javascript binding knockout.js

您好,我在客户端有下一部分映射, 然后我添加了子数组绑定,我开始得到错误之类的 未捕获错误:无法找到要匹配的结束评论标记:ko foreach:{data:$ item.sub,as:'s'}

<tbody>
    <!-- ko foreach: {data: reportData, as: 'item'} -->
    <tr>
        <td data-bind="text: item.statDate">                        
        </td>
        <td>
            <span data-bind="text: item.newRegisteredUsers"></span>
            <table>
                <!-- ko foreach: {data: $item.sub, as: 's'} -->
                <tr>
                    <td data-bind="text: s.name"></td>
                    <td data-bind="text: s.amount"></td>                                
                </tr>
                <!-- /ko -->
            </table>
        </td>
        <td data-bind="text: item.text"></td>                           
    </tr>
    <!-- /ko -->
</tbody>

有什么问题? 感谢。

2 个答案:

答案 0 :(得分:5)

问题可能是您的浏览器正在插入一个包裹内部表的tbody元素;你需要明确地将它放在那里(在任何情况下哪些可访问性指南都应该这样做),其中包含foreach绑定:

        <span data-bind="text: newRegisteredUsers"></span>
        <table>
           <tbody>
            <!-- ko foreach: {$data.sub, as: 's'} -->
            <tr>
                <td data-bind="text: s.name"></td>
                <td data-bind="text: s.amount"></td>                                
            </tr>
            <!-- /ko -->
           </tbody>
        </table>

答案 1 :(得分:1)

参考: Knockout.js containerless "foreach" not working with <table>

  

这与浏览器插入tbody标签有关   自动,这会在评论中造成不匹配。

尝试使用类似的内容,我已将foreach移至tbody标记:

<tbody data-bind="foreach: reportData">    
    <tr>
        <td data-bind="text: statDate">                        
        </td>
        <td>
            <span data-bind="text: newRegisteredUsers"></span>
            <table>
                <!-- ko foreach: {$data.sub, as: 's'} -->
                <tr>
                    <td data-bind="text: s.name"></td>
                    <td data-bind="text: s.amount"></td>                                
                </tr>
                <!-- /ko -->
            </table>
        </td>
        <td data-bind="text: text"></td>                           
    </tr>
</tbody>