【無理そうです。この質問には後で自分で答えます]
この質問は、主に以前の質問の続きです。「非同期計算」アプローチを使用して、ページの一部を更新します。Michael Best のおかげで、UI の見えない部分の更新に関する問題を解決できました。しかし、まだ厄介なことが 1 つあります。初期 (デフォルト) 値を計算されたオブザーバブルに設定するにはどうすればよいですか? ページの読み込み中に複数の ajax 呼び出しを避けるようにしています。その代わりに、json をページに埋め込んですべてを一度にロードします。些細な(一般的な)ようですか?しかし、非同期計算の最初の評価を抑制することはできません。したがって、どのような場合でも ajax 呼び出しが行われます。このアプローチを使用できます:
var isFirstEval = ko.observable(true);
updateComputed = ko.pureComputed(function () {
updateTrigger();
if(isFirstEval()){
isFirstEval(false);
result(initialValue);
}
else
result(evaluator.call(owner));
});
しかし、前の質問と同じ問題に直面しています。これは、計算されたオブザーバブルを再評価するためにアプローチノックアウトを使用するevaluator
ため、変更をサブスクライブすることはありません。の後の最初の評価をチェックするため、同様の質問からの提案が機能します。したがって、計算された は常に追跡され、. ajax呼び出しを行うことができるように、依存関係を気にするためだけに呼び出すことができないため、このアプローチは使用できません... var value = self.product() * self.quantity();
product
quantity
evaluator
evaluator
計算済み (または純粋な計算済み) の最初の評価を抑制する方法はありますか? それとも初期値を設定する方法ですか? 助言がありますか?他の回避策はありますか?