1

同じテーブルに 2 つのコードがあります。1つは次のようになります。

<tr>
   <th data-bind="text: tableHeaders()[0].title"></th>
   <th data-bind="text: tableHeaders()[1].title"></th>
   <th data-bind="text: tableHeaders()[2].title"></th>
</tr>

もう一方は次のようになります。

<tr data-bind="foreach: tableHeaders">
   <th data-bind="text: title"></th>
</tr>

1 つ目は正しく印刷されますが、2 つ目は何も印刷されません。ソースコードを調べると、

<tr data-bind="foreach: tableHeaders"></tr>

jsfiddle(works: http://jsfiddle.net/nnjEf/4/ )で問題を再現できなかったため、明らかに別の問題です。他にトラブルシューティングできる方法はありますか?

4

1 に答える 1

1

これまでのように「フローバインディングの制御」(つまり、HTMLでforeachインラインを使用する)は、Knockoutjs 2.0(またはベータリリース名では1.3)で最初に導入されました。jsfiddleもフレームワークとしてv2.0を使用しています。

実際のコードを見ずに言うことは不可能ですが、私の疑いは、これをサポートしていない下位バージョンを使用していることです。v1.2を使用している場合におそらく機能する古い方法は、テンプレートを使用することです。

<tr data-bind="template:{name: 'tableHeadersTemplate', foreach: tableHeaders}">
</tr>

<script type="text/html" id="tableHeadersTemplate">    
   <th data-bind="text: title"></th>
</script>

これはv2.0以降でも機能しますが、現在試している方法よりもはるかに多くのマークアップを生成することは明らかです。

于 2012-06-26T09:53:00.990 に答える