KnockoutJS中的模板,空字符串不呈现

时间:2011-08-08 05:41:41

标签: javascript multidimensional-array knockout.js jquery-templates

我使用KnockoutJS将二维数组渲染为表时遇到问题。我创建了demo fiddle,但这是相关的模板代码:

<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 个答案:

答案 0 :(得分:1)

Knockout在通过jQuery Templates插件发送之前将每个项目放入其自己的数组中,这样它就不会尝试解包数组本身的项目。

似乎jQuery模板不呈现空/ null /未定义的数组项。

我认为你的选择是:

  • 做你做的(用“”替换项目)
  • 删除最里面的模板并对数组执行{{each}}
  • 映射您的数组以使用对象[{value: 1}, {value: 2}, {value: ""}, {value: 4}]