【问题标题】:Observable update not reflecting in the UI in knockout可观察到的更新未在淘汰赛中反映在 UI 中
【发布时间】: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


【解决方案1】:

centralServiceFee 是一个可观察的,所以你应该像这样update 它:

parentPartnerPricingVM.perEntityPartnerPrices[i].centralServiceFee(7)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-25
    • 2013-05-01
    • 1970-01-01
    • 2015-06-29
    • 2021-09-19
    • 2018-03-30
    • 2013-03-12
    • 1970-01-01
    相关资源
    最近更新 更多