我使用的是dojo 1.7版本,我想绑定用户定义的事件,在jQuery中我可以这样做:
$(window).bind("pushMessage",function(){});
然后触发如下所示的事件:
$(window).trigger("pushMessage",{});
dojo能得到和上面一样的结果吗?如果可以,怎么做?
emeijp431#
是的,可以通过dojo/on:
dojo/on
on(window, "pushMessage", function(event) {}); on.emit(window, "pushMessage", { bubbles: true, cancelable: true });
查看实际应用:http://jsfiddle.net/phusick/MQThM/还有dojo/Evented,它提供了一个类,可以用作发出自己事件的JavaScript类的基类或mixin。
dojo/Evented
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/
txu3uszq2#
如果您想发布/订阅全局事件,您可能会发现dojo/topic很有帮助。
2条答案
按热度按时间emeijp431#
是的,可以通过
dojo/on
:查看实际应用:http://jsfiddle.net/phusick/MQThM/
还有
dojo/Evented
,它提供了一个类,可以用作发出自己事件的JavaScript类的基类或mixin。也可以在jsFiddle上使用:http://jsfiddle.net/phusick/ZhG58/
txu3uszq2#
如果您想发布/订阅全局事件,您可能会发现dojo/topic很有帮助。