我有一个问题,使用KnockoutJS渲染二维数组作为一个表。我已经创建了一个demo,但这是相关的模板代码:
<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,并决定它不应该被渲染。
你可以在我的小提琴上看到。我希望它呈现为
<>之前1 - 2 -- 4 -之前而不是我看到的:
<>之前1 - 2 -4 -之前我有一个解决办法通过改变我的数据,所以空字符串被一个空格取代,但希望有人可能有一个更好的建议或理解的问题。谢谢。
Knockout在将每个项通过jQuery Templates插件发送之前将其放入自己的数组中,这样它就不会试图打开本身就是数组的项。
似乎jQuery模板不渲染数组项为空/null/undefined
我认为你的选择是:
- do what you did(将item替换为" ")
- 删除最内部的模板,并在数组上做一个
{{each}}
- 映射你的数组使用对象
[{value: 1}, {value: 2}, {value: ""}, {value: 4}]