Держатель нокаут-модели не обновляется автоматически

0

Я использую модель нокаута MVVM для моего приложения

self.advanceDetails = 
    {

        hasUserInPutEvoucherTotalLimit: self.evoucherTotalLimit,
        isEvoucherMaxLimit: self.noMaxUseLimit,
        maxUseLimit: self.noMaxUseLimit() ? -1 : self.evoucherMaxLimit,
        hasUserInPutEvoucherMaxLimit: self.evoucherMaxLimit,
        expiredDaysToShow: self.expiryDays,
        registerPromoWaitTime: self.waitTimeDays
    };

Вот

     maxUseLimit: self.noMaxUseLimit() ? -1 : self.evoucherMaxLimit

не изменяется, если изменяется self.noMaxUseLimit. я имею в виду, если изначально self.noMaxUseLimit был ложным, тогда self.advanceDetails всегда устанавливает maxUseLimit в self.evoucherMaxLimit независимо от self.noMaxUseLimit, который теперь является истинным

  • 1
    Вам нужно добавить больше кода. Например, какие из ваших свойств являются наблюдаемыми, а какие нет. Как правило, все, что не является наблюдаемым, не обновит ни одну из его зависимостей.
Теги:
knockout.js

1 ответ

4
Лучший ответ

Наблюдения запускают только автоматические обновления, которые вы ищете, когда вы связываете их с HTML. То, что вы ищете, является рассчитанным наблюдаемым.

maxUseLimit: ko.computed(function () {
    return self.noMaxUseLimit() ? -1 : self.evoucherMaxLimit;
})

Вычисленное наблюдение дает автоматическое отслеживание зависимостей: оно определяет, какие другие наблюдаемые (зависимости) влияют на значение вычисляемого и автоматически перерабатывает свою логику при изменении одной из зависимостей.

Для получения дополнительной информации об вычислительных наблюдаемых: http://knockoutjs.com/documentation/computedObservables.html

  • 0
    Спасибо за ответ, это сработало

Ещё вопросы

Сообщество Overcoder
Наверх
Меню