これは特に技術的な質問ではありませんが、このような問題に対する最善のアプローチは何か不思議です。ノックアウトでこの問題が発生しても、ユースケースは他の場所でも有効であると確信しています。複数のサブスクライブされた変数が一緒に呼び出されたときに関数を1回だけ呼び出す方法
2つの変数simpleObserve1
とsimpleObserve2
を購読しているので、値が変更されるたびに関数resetAllValues()
が呼び出されます。
var simpleObserve1 = ko.observable(0), // initial values
simpleObserve2 = ko.observable(0); // initial values
var resetAllValues = function resetAllValues() {
/* this function takes all observable values and resets them */
{...}
}
simpleObserve1.subscribe(function(){
resetAllValues();
});
simpleObserve2.subscribe(function(){
resetAllValues();
});
simpleObserve1(5); // value changed anywhere in code
simpleObserve2(10); // value changed anywhere in code
ここに2つの質問があります。 resetAllValues()が呼び出されると
- は、
simpleObserve1
とsimpleObserve2
含む0に対するすべての加入の値を変更します。これはまた、resetAllValues()
を何度も呼び出します。これが無限ループにならないようにするにはどうすればよいですか? - 両方の変数を一緒に更新したいが、
resetAllValues()
を1回だけ呼び出す場合はどうすればよいですか?
私は助けにknockout's dispose()メソッドを使用しようとしましたが、これを行うより良い方法があるかどうか疑問に思っていました。