Javascript KnockoutJS中的模板,空字符串为';t渲染
我在使用KnockoutJS将二维数组呈现为表时遇到了一个问题。我已经创建了,但这是相关的模板代码:Javascript KnockoutJS中的模板,空字符串为';t渲染,javascript,multidimensional-array,knockout.js,jquery-templates,Javascript,Multidimensional Array,Knockout.js,Jquery Templates,我在使用KnockoutJS将二维数组呈现为表时遇到了一个问题。我已经创建了,但这是相关的模板代码: <script type="text/x-jquery-tmpl" id="resultRowTemplate"> <tr data-bind="template: { name: 'resultColumnTemplate', foreach: $data }"></tr> </script> <script type="text
<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>
-${$data}-
我的问题是,当数据为空字符串时,resultColumnTemplate不会呈现。我猜内部有什么东西将空字符串视为null/false,并决定不应呈现它
你可以从中看到这一点。我希望它能呈现出
-1- -2-
-- -4-
-1- -2-
-- -4-
而不是我所看到的:
-1- -2-
-4-
-1- -2-
-4-
我已经找到了一个解决方法,通过更改数据,将空字符串替换为一个空格,但希望有人能对这个问题有更好的建议或理解。谢谢。在通过jQuery模板插件发送之前,Knockout会将每个项目放入自己的数组中,这样它就不会试图打开属于数组本身的项目 jQuery模板似乎不会呈现空/空/未定义的数组项 我认为你的选择是:
- 执行您所做的操作(将项目替换为“”)
- 移除最里面的模板,并对数组执行
{{each}
- 将数组映射为使用对象
[{value:1},{value:2},{value::},{value:4}]
{{each}}
的建议,似乎是最轻松和最不黑客的解决方案。我暂时不把你作为答案,以防其他人有更整洁的东西。