Skip to content

Instantly share code, notes, and snippets.

@sagar-ganatra
Last active December 15, 2015 15:19
Show Gist options
  • Save sagar-ganatra/5280900 to your computer and use it in GitHub Desktop.
Save sagar-ganatra/5280900 to your computer and use it in GitHub Desktop.
Publisher\Subscriber methods in the Controller
define(function() {
var events = {};
var publishedEvents = {};
var subscribe = function (subscriber, eventName) {
//if new event then create an entry in the events map
if(!events.hasOwnProperty(eventName)) {
events[eventName] = [];
}
//add subscriber to the list
events[eventName].push(subscriber);
//event was already published but the module was not loaded
if(publishedEvents.hasOwnProperty(eventName)) {
$(subscriber.el).trigger(eventName,publishedEvents[eventName]);
}
};
var publish = function (eventName, data, dontStoreData) {
//if eventName exists then trigger the event to all subscribers
if(events[eventName]) {
for (var i=0; i<events[eventName].length; i++) {
$(events[eventName][i].el).trigger(eventName, data);
}
}
if(!dontStoreData)
publishedEvents[eventName] = data;
};
return {
subscribe: subscribe,
publish: publish
};
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment