3

私は dojo 1.7 バージョンを使用しています。ユーザー定義のイベントをバインドしたいのですが、jQuery では次のように実行できます。

$(window).bind("pushMessage",function(){});

次に、次のようにイベントをトリガーします。

$(window).trigger("pushMessage",{});

dojo は上記と同じ結果を得ることができますか? はいの場合、どのように?

4

2 に答える 2

3

はい、次の方法で可能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/

于 2012-06-06T05:01:33.723 に答える
1

グローバルなイベントを公開/購読したい場合は、dojo/topicが役立つかもしれません。

于 2013-02-07T15:34:28.800 に答える