2011-11-14 46 views
51

此代碼工作拋出(在Chrome)的錯誤: 「找不到註釋結束標籤匹配:KO的foreach:MyPlans」:Knockout.js無容器 「的foreach」 不<table>

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

如果我使用列表來代替,一切正常:

<ul> 
    <!-- ko foreach: MyPlans --> 
    <li> 
     Test 
    </li> 
    <!-- /ko --> 
</ul> 

我想用一個表的無容器foreach。有什麼我做錯了嗎?這是一個錯誤嗎?

回答

87

這與瀏覽器自動插入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標籤,如果需要的話。

+1

謝謝!這清除了很多東西。我一定會更仔細地檢查實際的標記。 – Jag

+0

正如RP提到擁有多個'tbody'標籤是合法的。對行進行分組很有用,[這裏](http://www.w3.org/TR/html401/struct/tables.html#h-11.2.3)是更多信息。 –

相關問題