0

我有一個問題,使用KnockoutJS呈現一個二維數組作爲表。我創建了一個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不會被渲染。我猜的東西內部對待空字符串爲空/假,並決定它不應該呈現。

你可以在my fiddle看到這個。我希望它呈現爲

 
-1- -2- 
-- -4- 

而不是我所看到的:

 
-1- -2- 
-4- 

我已經改變了我的數據,以便空字符串由單個空格替換了一種變通方法,但希望有人對問題有更好的建議或理解。謝謝。

回答

1

Knockout在通過jQuery模板插件發送它之前將每個項目放入其自己的數組中,以便它不會嘗試打開數組本身的項目。

看來,jQuery模板不呈現空/空/未定義的數組項。

我認爲,你的選擇是:

  • 你做了什麼
  • (用「」替換項目),除去最內層的模板,並做了{{each}}在你的陣列
  • 映射你的數組使用物體[{value: 1}, {value: 2}, {value: ""}, {value: 4}]
+0

謝謝你。已經使用了「{{每個}}」的建議,似乎是最輕鬆,最不危險的解決方案。如果別人有更好的東西,我會暫時將你標記爲答案。 – SamStephens