【发布时间】:2019-10-05 03:37:53
【问题描述】:
我有以下 HTML
<table style="margin: 0 auto; color: grey; empty-cells: show">
<tbody data-bind="foreach: perEntityPartnerPrices">
<tr data-bind="css: { even: $parentContext.$index() % 2 }">
<td class="input-with-revert-button">
<input data-bind="numericValue: centralServiceFee,enable:false" class="integer" />
<button class="ui-button ui-corner-all ui-widget" data-bind="enable: false, css: { 'ui-state-disabled': (!centralServiceFeeReturnEnable()) }, attr: { 'title': centralServiceReturnText }, click: resetCentralServiceFee">
<span class="ui-icon ui-icon-arrowreturnthick-1-w"></span>
</button>
</td>
</tr>
</tbody>
</table>
所以基本上我绑定到一个数组 perEntityPartnerPrices 并使用 centralServiceFee 属性。
this.centralServiceFee = ko.observable();
我正在更新 centralServiceFee 的值,如下所示
for (var i = 0; i < parentPartnerPricingVM.perEntityPartnerPrices.length; i++) {
if (i >= 1) {
parentPartnerPricingVM.perEntityPartnerPrices[i].centralServiceFee._latestValue = 7;
}
}
我看到值正在更新,因为我有一个计算值,我看到它已更新,但在 UI 中它仍然显示旧值。有人可以告诉我我在这里做错了什么。
编辑:请注意,我正在直接更新 latestvalue,因为我在 centralServiceFee 上有一个订阅功能,如果我更改一个值会更改其他值,那么订阅会继续触发。
谢谢
【问题讨论】:
-
你为什么不这样更新它
centralServiceFee(7)? -
因为基于第一个数组索引中的属性值更新,我必须更新其他索引中的相同属性值,并且我在属性上有一个订阅功能..所以订阅方法会继续触发。
标签: javascript knockout.js knockout-3.0