crop-pubsub.js 537 B

123456789101112131415161718192021222324
  1. 'use strict';
  2. crop.factory('cropPubSub', [function() {
  3. return function() {
  4. var events = {};
  5. // Subscribe
  6. this.on = function(names, handler) {
  7. names.split(' ').forEach(function(name) {
  8. if (!events[name]) {
  9. events[name] = [];
  10. }
  11. events[name].push(handler);
  12. });
  13. return this;
  14. };
  15. // Publish
  16. this.trigger = function(name, args) {
  17. angular.forEach(events[name], function(handler) {
  18. handler.call(null, args);
  19. });
  20. return this;
  21. };
  22. };
  23. }]);