0

シナリオ :- チェックされたアイテムとチェックされていないアイテムの数を含む json を共通の関数に送信する必要があります。共通の関数は、いくつかの基本的な検証を行うか、エラーを表示します。この関数を呼び出す異なる css/js チームごとに異なる関数があり、一般的な関数の結果 (true/false) に応じて、json にチェック/チェック解除ステータスを提供した各チーム/モジュールが関連するアクションを実行します。したがって、共通関数(getcountなど)とこの関数を呼び出すすべての独立したチームは、共通関数の結果に依存してdom / cssを個別に操作し、共通関数もdomを個別に操作します。

関数を呼び出す従来の方法(getCount({"chk" : 2 , "unchk" : 4})など)の代わりに、Jqueryのようによりクリーンでトピックのみとしてすべての人に伝えやすいpusblish/subcribeメソッドを探していますname と contract/json を記述する必要があります (if/else 句も少なくなります)。共通関数はサブスクライバーであるため、すべての独立した関数が結果の chk/unchek json を発行するとき、共通関数は発行/購読アプローチを使用して操作を簡単に実行できますが、独立したメソッドはカウンター アクションも実行する必要があります。これは、購読関数ができる場合にのみ可能です。結果を送信します。私はjavascriptが非同期であることを知っています。また、すべての独立した関数/モジュールがリッスンできる共通のメソッドが発行できることも理解しています(「resultOfGetCount」など)。

そのようなシナリオに最適なアプローチを探しています。

4

1 に答える 1

1

これは、このブログ投稿からの jQuery での単純なパブリッシュ サブスクライブ モデルです。

var exampleHandle = function(){
    //do stuff when topic is published
    ...
}

function subscribe(topic,handle){
    $("#subscription").bind(topic,handle);
}

function publish(topic,params){
    $("#subscription").trigger(topic,params)
}

function unsubscribe(topic,handle){
    $("#subscription").unbind(topic,handle);
}

単純な文字列をトピックとして使用して、トピックを購読または購読解除し、ハンドルをコールバック関数としてアタッチできます。ハンドルは、必要に応じて後でトピックからサブスクライブを解除するためにも使用できます。

このメソッドは、jQuery のトリガーおよびバインド関数に基づいています。これらを使用すると、要素のカスタム イベントをリッスンし、要素のイベントを手動でトリガーできます。これは、単純なサブスクリプション モデルの基本的なバックボーンを提供します。

アプリケーション要素がトピックにサブスクライブする場合、ハンドラーを「サブスクリプション要素」にバインドします。これは、ページ上の指定された要素、または単にウィンドウ要素である可能性があります。もちろん、サブスクリプションごとに異なる要素を使用することもできます。次に、何かがそのトピックに発行されると、ハンドラー関数が実行されます。

パブリッシュの場合、関数はトピックとパラメーターをパブリッシュ関数に渡すことができます。これにより、jQuery のトリガーが呼び出され、イベント トピックが開始され、パラメーターが渡されます。これらのパラメーターはハンドル関数に渡されます。

要素がサブスクリプションをキャンセルしたい場合、トピックとハンドル関数を unsubscribe メソッドに渡すことができます。ハンドルは、コピーや同様の関数ではなく、最初にサブスクライブするために使用されたものと同じ関数オブジェクトでなければならないことに注意してください。jQuery の unbind を使用して、handle 関数を使用せずにトピックを指定するだけで、トピックへのすべてのサブスクリプションをキャンセルすることもできます。

于 2013-03-27T15:00:22.823 に答える