私は多くの計算された関数で使われている特定のノックアウト観測値を持っています。しかし、これらの計算された関数のうちの1つでは、観測値が更新されたときにトリガーするのは望ましくありません。計算されたオブザーバブルを更新するには?
self.obs1 = ko.observable(foo);
self.obs2 = ko.observable(bar);
//I want this computed to behave normally
this.comp1 = ko.computed(function() {
return self.obs1() + self.obs2();
}, this);
//I want this computed to trigger on obs1 update but ignore updates to obs2
this.comp2 = ko.computed(function() {
return self.obs1() + self.obs2();
}, self);
setTimeout(function() {
self.obs1(20);
self.obs2(15);
}, 1000);
https://jsfiddle.net/r73yLk5u/
私はまだCOMP2が実行されたとき、私はちょうどにobs2の更新をしたいいけないobs2の現在の値にアクセスできるようにする必要があります。注:コード賢明それは次のようになりますcomp2が新しい値を持つようにトリガーします。
これは可能ですか?
うわ、それが可能だ場合、私は知りませんが、それはおそらく、いくつかのカスタムエクステンダーか何かです。しかし、これは何かが間違っているというサインだと思うし、先に進んでそれをやる前に、あなたはそれを欲しがっているのですが、あなたは[XY問題](http:// meta .stackexchange.com/questions/66377/what-is-the-xy-problem)。 – vlaz
ありがとう@vlaz。あなたはおそらく私はちょうどその文脈であまりにも渋滞したくないと思っていたのです。私のUIはあまりリフレッシュしていませんが、私はただちに 'obs1'へのアップデートを見たいので、rateLimitを使用することはできませんが、非常に頻繁に更新される 'obs2'があります。 – Nathan
2番目の観測値で '.extend({throttle:/ * some reasonable values * /})'を使ったとお考えですか? – vlaz