You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.0 KiB
36 lines
1.0 KiB
define(["./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: |
|
// example: |
|
// | define(["dojo/Evented", "dojo/_base/declare", "dojo/Stateful" |
|
// | ], function(Evented, declare, Stateful){ |
|
// | var EventedStateful = declare([Evented, Stateful], {...}); |
|
// | var instance = new EventedStateful(); |
|
// | instance.on("open", function(event){ |
|
// | ... do something with event |
|
// | }); |
|
// | |
|
// | instance.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; |
|
});
|
|
|