gpt4 book ai didi

knockout.js - KnockoutJS - 使用条件语句计算出的可观察量如何工作

转载 作者:行者123 更新时间:2023-12-04 02:00:14 25 4
gpt4 key购买 nike

KnockoutJS 有计算 observables 的概念,它是依赖于一个或多个 observables 的函数。 knockout 能够determine the dependencies of a computed observable as described in the docs :

Whenever you declare a computed observable, KO immediately invokes its evaluator function to get its initial value. While your evaluator function is running, KO keeps a log of any observables (or computed observables) that your evaluator reads the value of.



现在,我不明白的是,如果您计算出的 observable 包含条件逻辑,这是如何工作的。如果 Knockout 调用评估器函数,那么条件逻辑肯定会导致函数所依赖的 observables 不被调用?

我创建了这个 fiddle 来测试:

http://jsfiddle.net/bJK98/
var ViewModel = function(first, last) {
this.firstName = ko.observable(first);
this.lastName = ko.observable(last);
this.condition = ko.observable(false);

// at the point of evaluation of this computed observabled, 'condition'
// will be false, yet the dependecy to both firstName and lastName is
// identified
this.fullName = ko.computed(function() {
return this.condition() ? this.firstName() : this.lastName();
}, this);
};

然而,Knockout 以某种方式正确识别了对 firstName 的依赖。和 lastName .

任何人都可以解释如何?

最佳答案

每次重新评估一个dependentObservable 时,都会再次跟踪相关性。因此,如果您有条件逻辑,那么未命中的分支将不会对依赖项做出贡献。

在您的 fiddle 中,如果您编辑 firstName ,则该值不会更新,直到您切换 condition .此时,lastName不再是依赖项,因此对它的更改不会触发dependentObservable。

它并不比原始描述更复杂。要记住的基本事情是每次重新评估依赖项时都会记录依赖项。

关于knockout.js - KnockoutJS - 使用条件语句计算出的可观察量如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10147088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com