更新淘汰赛阵列,而无需再次触发订阅

时间:2019-05-17 16:34:27

标签: javascript knockout.js knockout-3.0

我有一个Knockout数组,如下所示,它绑定到HTML

<tbody data-bind="foreach: perEntityPartnerPrices">
    <tr>
        <td>
            <input data-bind="numericValue: centralServiceFee" class="integer" />
        </td>
    </tr>
</tbody>   

因此,我有一个名为perEntityPartnerPrices的数组,在其中将另一个带有可观察到的名为centralServiceFee的模型推入其中。

我在centralServiceFee上有一个订阅,用于更新主VM中的另一个顶级值

this.centralServiceFee.subscribe(function (value) {
            if (value == null || value == undefined) {
                self.centralServiceFee(0);
            }           
            if (parentPartnerPricingVM.partnerPricingPerEntityExists) {
                parentPartnerPricingVM.updateCentralServiceFee();
            }
        });

现在的问题是,基于一个centralServiceFee的更改,我必须更新centralServiceFee of the perEntityPartnerPrices array中的相同属性,这又会反复触发订阅功能。

所以问题是我如何在不循环调用subscribe的同时静默地在Knockout数组中更改相同的属性值,并且当我使用以下代码更改属性时,它在UI中没有更新,我不知道为什么因为centralServiceFee是可观察的。

 if (parentPartnerPricingVM.partnerPricingPerEntityExists) {
                for (var i = 0; i < parentPartnerPricingVM.perEntityPartnerPrices.length; i++) {
                    if (i >= 1) {
                        parentPartnerPricingVM.perEntityPartnerPrices[i].centralServiceFee(67);
                    }
                }
            }

谢谢

0 个答案:

没有答案