循环中的敲除下划线循环失去了可观察的功能
knockout underscore loop in loop loses observable functionality
我正在尝试构建 table 和 underscore.js 。
我遇到过这样的情况,当我需要将一个循环放在另一个循环中时,例如:
<tbody >
<% _.each(ShippingCharge.Lines(), function(line) { %>
<tr>
<td><input type="text" class="form-control" data-bind="value : line.ShippingZone.Name"/></td>
<% _.each(line.Charges(), function(data) { %>
<td><input type="text" class="form-control" data-bind="value : data"/></td>
<% }) %>
</tr>
<% }) %>
</tbody>
问题是当 line.Charges()
值被修改时,observableArray
不更新。您可以在 jsFiddle 上查看。请注意,只有嵌套循环不更新 observaleArray
,您可以更改 Zones
列值并看到它们更改 observaleArray
这就是您苦苦挣扎的地图插件。映射插件可以施展魔法,但有时 ViewModel 不正确或过于复杂,映射插件无法处理。
首先这句话很重要:
http://knockoutjs.com/documentation/observableArrays.html
Key point: An observableArray tracks which objects are in the array, not the state of those objects
如果查看映射操作的结果,属性
vm.ShippingCharge.Lines()[0].Charges
是一个可观察数组。
您的要求是能够更改单独的 Charges(跟踪 Charges 数组中每个对象的状态)。所以它应该是一个可观察的数组,或者当数组中的值的数量是动态的时,一个可观察的可观察数组。
我不确定映射插件是否可以做到这一点。
无论如何,我认为您的 ViewModel 对于映射插件来说太复杂了,所以保留它的魔力,手动编写视图模型代码。
更新(工作)fiddle:http://jsfiddle.net/martijn/NW5Vn/145/
我正在尝试构建 table 和 underscore.js 。 我遇到过这样的情况,当我需要将一个循环放在另一个循环中时,例如:
<tbody >
<% _.each(ShippingCharge.Lines(), function(line) { %>
<tr>
<td><input type="text" class="form-control" data-bind="value : line.ShippingZone.Name"/></td>
<% _.each(line.Charges(), function(data) { %>
<td><input type="text" class="form-control" data-bind="value : data"/></td>
<% }) %>
</tr>
<% }) %>
</tbody>
问题是当 line.Charges()
值被修改时,observableArray
不更新。您可以在 jsFiddle 上查看。请注意,只有嵌套循环不更新 observaleArray
,您可以更改 Zones
列值并看到它们更改 observaleArray
这就是您苦苦挣扎的地图插件。映射插件可以施展魔法,但有时 ViewModel 不正确或过于复杂,映射插件无法处理。
首先这句话很重要: http://knockoutjs.com/documentation/observableArrays.html
Key point: An observableArray tracks which objects are in the array, not the state of those objects
如果查看映射操作的结果,属性
vm.ShippingCharge.Lines()[0].Charges
是一个可观察数组。
您的要求是能够更改单独的 Charges(跟踪 Charges 数组中每个对象的状态)。所以它应该是一个可观察的数组,或者当数组中的值的数量是动态的时,一个可观察的可观察数组。
我不确定映射插件是否可以做到这一点。
无论如何,我认为您的 ViewModel 对于映射插件来说太复杂了,所以保留它的魔力,手动编写视图模型代码。
更新(工作)fiddle:http://jsfiddle.net/martijn/NW5Vn/145/