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 类的基类或 mixin。文档中的一个示例:

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 回答