1

たとえば、メニュー画面、オプション画面、エディター画面などがあります。以前は、これらのそれぞれを提供されたクラスにラップし、それぞれに関数をアクティブ化および非アクティブ化しました。activate 関数は、関連する dom 要素を表示し、入力の受け入れを開始します。activate 関数は、関連する dom 要素を非表示にし、入力の受け入れを停止します。したがって、ユーザーがメニュー画面にいて、「オプションの設定」ボタンをクリックした場合、次のようにします。

this.deactivate() // We're currently in the menu, so the menu object is "this"
options.activate()

このシナリオを処理する標準的な方法はありますか?

4

1 に答える 1

1

JavaScriptで主に「パブリッシュ/サブスクライブ」パターンと呼ばれるものを実装するフレームワークはたくさんあります。Backbone.Eventsは、私が頻繁に使用するイベントです。これを実装するための本当に簡単な方法があります。これは、プロジェクトにbackbone.jsunderscore.jsの両方が含まれていることを前提としています。

var Foo = {},
    Bar = {};

_.extend(Foo, Backbone.Events);
_.extend(Bar, Backbone.Events);

Foo.prototype.deactivate = function() {
    // Do stuff 
    this.trigger("Foo_Deactivated");
};

Bar.prototype.activate = function() {
    // Do stuff 
    this.trigger("Bar_Activated");
};

myFoo = new Foo();
myBar = new Bar();

myBar.on("Foo_Deactivate", function() { 
    this.activate(); 
    this.trigger("Bar_Activated"); 
}, this);

それがあなたの質問に答えることを願っています!

于 2013-01-11T21:11:55.203 に答える