35 lines
1,007 B
JavaScript
35 lines
1,007 B
JavaScript
define("dojo/Evented", ["./aspect", "./on"], function(aspect, on){
|
|
// module:
|
|
// dojo/Evented
|
|
|
|
"use strict";
|
|
var after = aspect.after;
|
|
function Evented(){
|
|
// summary:
|
|
// A class that can be used as a mixin or base class,
|
|
// to add on() and emit() methods to a class
|
|
// for listening for events and emitting events:
|
|
//
|
|
// | define(["dojo/Evented"], function(Evented){
|
|
// | var EventedWidget = dojo.declare([Evented, dijit._Widget], {...});
|
|
// | widget = new EventedWidget();
|
|
// | widget.on("open", function(event){
|
|
// | ... do something with event
|
|
// | });
|
|
// |
|
|
// | widget.emit("open", {name:"some event", ...});
|
|
}
|
|
Evented.prototype = {
|
|
on: function(type, listener){
|
|
return on.parse(this, type, listener, function(target, type){
|
|
return after(target, 'on' + type, listener, true);
|
|
});
|
|
},
|
|
emit: function(type, event){
|
|
var args = [this];
|
|
args.push.apply(args, arguments);
|
|
return on.emit.apply(on, args);
|
|
}
|
|
};
|
|
return Evented;
|
|
});
|