123456789101112131415161718192021222324252627282930313233343536 |
- 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;
- });
|