16

computed関数を使用する場合と、subscribeknockout.js で関数を使用する場合の主な違いは何ですか?

4

4 に答える 4

22

計算されたオブザーバブルは、通常、計算された値を返すために使用されます。計算結果の評価の一部としてアクセスされるオブザーバブル (またはその他の計算結果) は依存関係になり、再実行をトリガーします。計算済みはサブスクリプションのように使用でき、複数のオブザーバブルを一度にサブスクライブしたい場合に特に便利です。ただし、どの依存関係が変更をトリガーしたかはわかりません。

手動サブスクリプションは、単一のオブザーバブル (または計算済み) に固有であり、新しい値が最初の引数として渡されます。このオブザーバブルが変更されたときにのみトリガーされるため、サブスクリプションのハンドラーの実行に依存関係を作成するという概念はありません。

于 2013-09-10T00:47:01.567 に答える
8

要するに、計算されたプロパティはゲッター/セッター プロパティのようなもので、主に計算された値用です。Subscribe は一種のコールバック関数でsubscribable、オブザーバブルと計算の派生元であるオブジェクトに追加/オブジェクトから削除できます。

デフォルトでは、サブスクリプションは「change」というトピックにサブスクライブし、明示的に定義すると次のようになります。

var obs = ko.observable();
obs.subscribe(function(newValue) { ... }, null, 'change');

「beforeChange」と呼ばれるサブスクライブできる別の組み込みトピックがあり、渡される値は古い値です。

obs.subscribe(function(oldValue) { ... }, null, 'beforeChange');

必要に応じて、次のように、独自のカスタム トピックを作成して視聴し、「公開」することもできます。

obs.subscribe(function(newValue) { ... }, null, 'customTopic');
obs("Hello World");// When this updates, 'change' and 'beforeChange' subscriptions are called.
obs.notifySubscribers('customTopic');// This is 'publishing' the new value to anyone subscribing to this topic.

Ryan Niemeyer は、 16:35 にこれに関する素晴らしいビデオと、このコンセプトに基づくKnockout-Postboxプラグインを持っています。

于 2013-09-10T00:53:21.177 に答える
2

依存関係を計算して実行し、バインドできる新しい値を生成します。サブスクライブ機能はイベントのようなものです。

于 2013-09-10T00:45:16.263 に答える