2011-11-14 4 views
51

で作業していないこのコードは(Chromeで)エラーがスローされます:私が使用している場合Knockout.js無容器 "foreachのは" <table>

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

: ":KOますforeach:MyPlans一致するように、終了コメントタグが見つかりません"リストではなく、すべてが動作します:

<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を追加し、結合を置くのいずれかです:レンダリングされた出力は以下のようになりますその上に。必要に応じて、テーブルは、複数のtbodyのタグを持っているため

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

それは合法です。

+1

ありがとうございました!これはかなり物事をクリアします。実際のマークアップをより慎重に確認しています。 – Jag

+0

RPは複数の 'tbody'タグを持つことが合法だと言います。行をグループ化すると便利です。[here](http://www.w3.org/TR/html401/struct/tables.html#h-11.2.3)は詳しい情報です。 –

関連する問題