KnockoutJS には、計算されたオブザーバブルの概念があります。これは、1 つ以上のオブザーバブルに依存する関数です。ノックアウトは、ドキュメントで説明されているように、計算されたオブザーバブルの依存関係を判断できます。
計算されたオブザーバブルを宣言すると、KO はすぐにその評価関数を呼び出して初期値を取得します。エバリュエーター関数が実行されている間、KO は、エバリュエーターが値を読み取るオブザーバブル (または計算されたオブザーバブル) のログを保持します。
さて、私が理解していないのは、計算されたオブザーバブルに条件付きロジックが含まれている場合、これがどのように機能するかです。Knockout がエバリュエーター関数を呼び出す場合、確かに条件付きロジックにより、関数が呼び出されないことに依存するオブザーバブルが発生する可能性がありますか?
テストするためにこのフィドルを作成しました:
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);
};
firstName
しかし、どういうわけか、Knockout は と の両方への依存関係を正しく識別しましたlastName
。
誰でも方法を説明できますか?