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.
 
 
 

48 lines
765 B

  1. define([
  2. ], function (
  3. ) {
  4. var events = {
  5. events: {},
  6. on: function (event, callback) {
  7. var list = this.events[event] || (this.events[event] = []);
  8. list.push(callback);
  9. return callback;
  10. },
  11. off: function (event, callback) {
  12. var list = this.events[event] || [];
  13. var lLen = list.length;
  14. for (var i = 0; i < lLen; i++) {
  15. if (list[i] == callback) {
  16. list.splice(i, 1);
  17. i--;
  18. lLen--;
  19. }
  20. }
  21. if (lLen == 0)
  22. delete this.events[event];
  23. },
  24. emit: function (event) {
  25. var args = [].slice.call(arguments, 1);
  26. var list = this.events[event];
  27. if (!list)
  28. return;
  29. var len = list.length
  30. for (var i = 0; i < len; i++) {
  31. var l = list[i];
  32. l.apply(null, args);
  33. }
  34. }
  35. };
  36. return events;
  37. });