私は dojo 1.7 バージョンを使用しています。ユーザー定義のイベントをバインドしたいのですが、jQuery では次のように実行できます。
$(window).bind("pushMessage",function(){});
次に、次のようにイベントをトリガーします。
$(window).trigger("pushMessage",{});
dojo は上記と同じ結果を得ることができますか? はいの場合、どのように?
私は dojo 1.7 バージョンを使用しています。ユーザー定義のイベントをバインドしたいのですが、jQuery では次のように実行できます。
$(window).bind("pushMessage",function(){});
次に、次のようにイベントをトリガーします。
$(window).trigger("pushMessage",{});
dojo は上記と同じ結果を得ることができますか? はいの場合、どのように?
はい、次の方法で可能dojo/on
です:
on(window, "pushMessage", function(event) {});
on.emit(window, "pushMessage", {
bubbles: true,
cancelable: true
});
実際に見てみましょう: http://jsfiddle.net/phusick/MQThM/
dojo/Evented
独自のイベントを発行する JavaScript クラスの基本クラスまたはミックスインとして使用できるクラスを提供するものもあります。ドキュメントの例:
require([
"dojo/_base/declare",
"dojo/Evented"
], function(
declare,
Evented
) {
var MyComponent = declare([Evented], {
startup: function() {
this.emit("ready", {});
}
});
var component = new MyComponent();
component.on("ready", function() {
console.log("Component is ready.");
});
component.startup();
});
また、jsFiddle で遊ぶ: http://jsfiddle.net/phusick/ZhG58/
グローバルなイベントを公開/購読したい場合は、dojo/topicが役立つかもしれません。