KnockoutJSは、1つまたは複数の観測に依存して機能している計算観測、という概念を持って働いています。ノックアウトはdetermine the dependencies of a computed observable as described in the docsすることができます:KnockoutJS - 条件文で計算された観測を行う方法は、
あなたが計算され、観察を宣言するたびに、KOはすぐにその初期値を取得するためにその 評価関数を呼び出します。評価者の 機能が実行されている間、KOは、評価者が値を読み取る観測値(または計算済み 観測値)のログを保持します。
私が理解できないことは、計算された観測値に条件付きロジックが含まれている場合、これがどのように機能するかです。ノックアウトが評価関数を呼び出す場合、条件付き論理は、関数が呼び出されないことに依存するオブザーバブルをもたらす可能性がありますか?
私がテストにこのバイオリンを作成しました:
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
とlastName
の両方に依存関係を特定しました。
どのように説明できますか?
私は計算された観測値がすべての依存関係を評価することによって実行時に自分の状態を判断すると信じていますので、すべてが明確かつ直接的なように見えますが、申し訳ありませんが質問の要点を得ることはできません – sll
私はいつもあなたが引用したようにマニュアルで説明しているアプローチはかなり賢明だと考えましたが、今これを指摘しています。それは非常にスマートで、 –