2012-09-12 3 views
6

BoilerplateJsの例では、ユーザーが1つのモジュールに変更を加えた後に相互通信するようにモジュールを調整する必要があります。他の関連モジュールはその変更を行って更新する必要があります。boilerplatejsのモジュールと相互通信する方法はありますか?

たとえば、ユーザーから名前と販売の入力を取得するモジュールと、検索したデータをテーブルやグラフで更新するモジュールがある場合、イベントを考慮してこれらの相互接続がどのように発生するかを説明できますか取り扱い?

ありがとうございます!

答えて

3

BoilerplateJSでは、各モジュールには独自のmoduleContextオブジェクトがあります。このモジュールコンテキストオブジェクトには、 'listen'と 'notify'という2つのメソッドがあります。詳細については、 '/src/core/context.js'のコンテキストクラスを見てください。

イベントに「リッスンする」必要があるコンポーネントは、イベントの名前とコールバックハンドラを指定してイベントに登録する必要があります。イベントを発生させるコンポーネントは、面倒なことを他の人に知らせるために 'notify'メソッドを使用する必要があります(オプションでパラメータを渡す)。

最新のBoilerplateJSコードのアップデートをGitHubから入手してください。私はちょうどclickCounterを複合コンポーネントにすることで変更を加えました。ここでは、clickmeコンポーネントはイベントを呼び起こし、「宝くじコンポーネント」は応答するイベントを待ちます。

イベントを通知するためのコード:イベントを聴くため

moduleContext.notify('LOTTERY_ACTIVITY', this.numberOfClicks()); 

コード:

moduleContext.listen("LOTTERY_ACTIVITY", function(activityNumber) { 
    var randomNum = Math.floor(Math.random() * 3) + 1; 
    self.hasWon(randomNum === activityNumber); 
}); 
+0

ところで.. BoilerplateJSは[pubsub.js](HTTPSのわずかに変更されたバージョン使用://をgithub.com/federico-lox/pubsub.js)フェデリコLucignanoの実装の後ろにシーン。 – Hasith

0

私は、Publish-Subscribeライブラリを使ってみると、Amplifyのようになります。この技術を使用すると、あるモジュールがイベントの発行者として働き、他のメンバーが加入者として登録し、これらのイベントを非常に分離した方法で聞いて応答することは容易です。

すでにノックアウトを使用しているので、最初にRyan Niemeyerのknockout-postboxプラグインを試してみることに興味があります。このライブラリの背景は、a demo fiddleを含むavailable hereです。必要に応じて、いつでもAmplifyに切り替えることができます。

関連する問題