Javascript KnockoutJS中的模板,空字符串为';t渲染

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

我在使用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>

-${$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}}
的建议,似乎是最轻松和最不黑客的解决方案。我暂时不把你作为答案,以防其他人有更整洁的东西。