Evented.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. define(["./aspect", "./on"], function(aspect, on){
  2. // module:
  3. // dojo/Evented
  4. "use strict";
  5. var after = aspect.after;
  6. function Evented(){
  7. // summary:
  8. // A class that can be used as a mixin or base class,
  9. // to add on() and emit() methods to a class
  10. // for listening for events and emitting events:
  11. // example:
  12. // | define(["dojo/Evented", "dojo/_base/declare", "dojo/Stateful"
  13. // | ], function(Evented, declare, Stateful){
  14. // | var EventedStateful = declare([Evented, Stateful], {...});
  15. // | var instance = new EventedStateful();
  16. // | instance.on("open", function(event){
  17. // | ... do something with event
  18. // | });
  19. // |
  20. // | instance.emit("open", {name:"some event", ...});
  21. }
  22. Evented.prototype = {
  23. on: function(type, listener){
  24. return on.parse(this, type, listener, function(target, type){
  25. return after(target, 'on' + type, listener, true);
  26. });
  27. },
  28. emit: function(type, event){
  29. var args = [this];
  30. args.push.apply(args, arguments);
  31. return on.emit.apply(on, args);
  32. }
  33. };
  34. return Evented;
  35. });