Knockout模型持有者不会自动更新

时间:2014-05-02 12:55:46

标签: jquery knockout.js

我正在为我的应用程序使用淘汰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现在是否为真

1 个答案:

答案 0 :(得分:4)

当您在HTML中绑定它们时,Observable只会触发您正在寻找的自动更新。您正在寻找的是计算可观察的。

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

计算的observable提供自动依赖关系跟踪:它确定哪些其他可观察对象(依赖关系)影响计算的值,并在其中一个依赖关系发生更改时自动重新运行其逻辑。

有关计算可观察量的更多信息:http://knockoutjs.com/documentation/computedObservables.html