dojo绑定用户定义的事件吗?

时间:2012-06-06 03:48:38

标签: javascript-events event-handling dojo jquery

谢谢,我使用1.7版本的dojo,我想绑定用户定义的事件,在jquery我可以这样做:

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

然后触发这样的事件:

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

可以dojo得到与上面相同的结果吗?如果是,怎么样?

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:1)

如果您想发布/订阅全球事件,您可能会发现dojo/topic有帮助。