我正在使用带有knockout.js和ko.mapping的rails 3.2。我能够从我的json数据映射并从中创建我的viewModel,在js控制台中我可以很好地查看数据树。在我看来,我正在使用form_for和字段来渲染我的视图。我无法弄清楚的是如何对fields_for中的输入进行数据绑定,而不必使用KO foreach或者。我的json的结构看起来像这样。
{
"ss_sections": [
{
"ss_lines": [
{
"ss_line_cells": [
{
"cell_name": "credits",
"cell_value": "124795.00",
},
]
}
]
}
]
}
我如何在我的输入上写出我的数据绑定属性,直接指向cell_value而不使用knockout.js循环,因为我的fields_for已经循环遍历我的元素?
答案 0 :(得分:2)
数据绑定属性仍然需要导航ko映射从数据生成的对象层次结构,所以我不认为你可以逃脱而不会在服务器上生成类似下面的混乱html(小提琴:{{3 }}):
<table id="ss_section0">
<tr id="ss_line0">
<td id="cell0">
<span data-bind="text:ss_sections()[0].ss_lines()[0].ss_line_cells()[0].cell_name"></span>
</td>
<td id="cell1">
<span data-bind="text:ss_sections()[0].ss_lines()[0].ss_line_cells()[1].cell_name"></span>
</td>
</tr>
<tr id="ss_line1">
<td id="cell0">
<span data-bind="text:ss_sections()[0].ss_lines()[1].ss_line_cells()[0].cell_name"></span>
</td>
<td id="cell1">
<span data-bind="text:ss_sections()[0].ss_lines()[1].ss_line_cells()[1].cell_name"></span>
</td>
</tr>
</table>
它看起来非常均匀,但很容易生成。
您确定需要在服务器上生成html吗?为什么不直接将json发送到客户端并使用标准的foreach / with在客户端生成?