Skip to content

Instantly share code, notes, and snippets.

@blittle
Created May 29, 2015 23:07
Show Gist options
  • Save blittle/e6088f22063045bae907 to your computer and use it in GitHub Desktop.
Save blittle/e6088f22063045bae907 to your computer and use it in GitHub Desktop.
Angular Decorator
/**
* Workaround to make defining and retrieving angular modules easier and more intuitive.
*/
(function(angular) {
var origMethod = angular.module;
var alreadyRegistered = {};
/**
* Register/fetch a module.
*
* @param name {string} module name.
* @param reqs {array} list of modules this module depends upon.
* @param configFn {function} config function to run when module loads (only applied for the first call to create this module).
* @returns {*} the created/existing module.
*/
angular.module = function(name, reqs, configFn) {
reqs = reqs || [];
var module = null;
if (alreadyRegistered[name]) {
module = origMethod(name);
module.requires.push.apply(module.requires, reqs);
} else {
module = origMethod(name, reqs, configFn);
alreadyRegistered[name] = module;
}
return module;
};
})(angular);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment