Обновление нокаутированного массива без повторной активации Подписаться - PullRequest
0 голосов
/ 17 мая 2019

У меня есть массив Knockout, который я привязываю к HTML, как показано ниже

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

Итак, у меня есть массив с именем perEntityPartnerPrices, внутри которого я помещаю другую модель с наблюдаемой с именем centralServiceFee.

У меня есть подписка на centralServiceFee, которую я использую для обновления другого значения верхнего уровня в основной виртуальной машине

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

Теперь проблема заключается в том, что на основе изменения в одном centralServiceFee я должен обновить то же свойство в centralServiceFee of the perEntityPartnerPrices array, что снова вызывает функцию подписки несколько раз.

Таким образом, вопрос заключается в том, как я могу молча изменить одно и то же значение свойства внутри массива Knockout, не вызывая подписку в цикле, а также когда я изменяю свойство с помощью приведенного ниже кода, оно не обновляется в пользовательском интерфейсе, который я не знаю, почему поскольку centralServiceFee является наблюдаемым.

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

Спасибо

...