In angularjs, given a module, how do you check if a directive/controller exists given a module.
I have a module and I want to know if some particular directives have bee
Solved the problem by writing a wrapper function that is called to load the controllers and stuff and at such I'm able to tell when each directive is loaded.
Use this code to check if a service exists.
$injector.has('myServiceName')
To check if a directive exists, you must add a Directive
suffix after the directive name:
$injector.has('myDirectiveNameDirective')
I found some working code here
angular.service('ControllerChecker', ['$controller', function($controller) {
return {
exists: function(controllerName) {
if(typeof window[controllerName] == 'function') {
return true;
}
try {
$controller(controllerName);
return true;
} catch (error) {
return !(error instanceof TypeError);
}
}
};
}]);
JSFiddle: http://jsfiddle.net/fracz/HB7LU/6780/
var controllers = [];
_.each(app._invokeQueue, function(value, index) {
if (value[0] !== '$controllerProvider') {
return;
}
controllers.push(value[2][0]);
});
if (controllers.indexOf('controller-i-want') === - 1) {
// controller is undefined
}