Я использую модель нокаута 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, который теперь является истинным
Наблюдения запускают только автоматические обновления, которые вы ищете, когда вы связываете их с HTML. То, что вы ищете, является рассчитанным наблюдаемым.
maxUseLimit: ko.computed(function () {
return self.noMaxUseLimit() ? -1 : self.evoucherMaxLimit;
})
Вычисленное наблюдение дает автоматическое отслеживание зависимостей: оно определяет, какие другие наблюдаемые (зависимости) влияют на значение вычисляемого и автоматически перерабатывает свою логику при изменении одной из зависимостей.
Для получения дополнительной информации об вычислительных наблюдаемых: http://knockoutjs.com/documentation/computedObservables.html