我正在为我的应用程序使用淘汰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为false则self.advanceDetails总是将maxUseLimit设置为self.evoucherMaxLimit,而不管self.noMaxUseLimit现在是否为真
答案 0 :(得分:4)
当您在HTML中绑定它们时,Observable只会触发您正在寻找的自动更新。您正在寻找的是计算可观察的。
maxUseLimit: ko.computed(function () {
return self.noMaxUseLimit() ? -1 : self.evoucherMaxLimit;
})
计算的observable提供自动依赖关系跟踪:它确定哪些其他可观察对象(依赖关系)影响计算的值,并在其中一个依赖关系发生更改时自动重新运行其逻辑。
有关计算可观察量的更多信息:http://knockoutjs.com/documentation/computedObservables.html