0

KnockoutJSを使用して2次元配列をテーブルとしてレンダリングする際に問題が発生しました。私はdemo fiddleを作成しましたが、これは、関連するテンプレートのコードです:KnockoutJSのテンプレート、空の文字列がレンダリングされない

<script type="text/x-jquery-tmpl" id="resultRowTemplate"> 
    <tr data-bind="template: { name: 'resultColumnTemplate', foreach: $data }"></tr> 
</script> 

<script type="text/x-jquery-tmpl" id="resultColumnTemplate"> 
    <td>-${$data}-</td> 
</script> 

<table> 
    <tbody data-bind="template: { name: 'resultRowTemplate', foreach: Results }"></tbody> 
</table> 

私の問題は、データが空の文字列であるときresultColumnTemplateがレンダリングされていないということです。空の文字列をnull/falseとして扱い、レンダリングすべきではないと判断しているものを推測しています。

これはmy fiddleで確認できます。私はそれが代わりに私が見ているものの

 
-1- -2- 
-- -4- 

としてレンダリングするために期待したい:

 
-1- -2- 
-4- 

私は空の文字列が単一の空白に置き換えられて、私のデータを変更することで回避策を持っています、誰かが問題のより良い提案や理解を得ることを望んでいた。ありがとう。

答えて

1

ノックアウトは各項目を独自の配列に入れてからjQuery Templatesプラグインを介して送信するため、配列自体の項目を展開しないようにします。

jQueryテンプレートは、空/空白/未定義の配列項目を表示しないようです。

私はあなたのオプションがあると思う:

    • は、あなたが(「"で項目を置き換える)でした何を最も内側のテンプレートを削除し、{{each}}
    • あなたのアレイ上に配列をマッピングしますオブジェクトを使用する [{value: 1}, {value: 2}, {value: ""}, {value: 4}]
  • +0

    ありがとうございます。 '{{each}} 'の提案を使ったことがありますが、最も軽くてハックの少ない解決策です。誰か他の人がまだきれいなものを持っている場合には、私はちょっと答えとしてあなたをマークしておきます。 – SamStephens

    関連する問題