2013-09-24 16 views
19

Есть ли способ перечислить все директивы и контроллеры, которые были определены для данного углового модуля? Например, представьте, что я определяю три контроллера в основном модуле (например, angular.module ('main'). Controller ('MainCtrl', function() {...}). Есть ли способ получить список эти три контроллераСписок объявленных директив/контроллеров в модуле AngularJS

ответ

27

Хмм очень трудно и не очень хорошая вещь, я думаю, но:

var app = angular.module('MyApp', []); 

console.log(app._invokeQueue[0][2][1]); 

_invokeQueue является массивом, если вы сделаете это для каждой записи получение [0] [2] [1] вы Посмотрите имя каждого провайдера в своем модуле.

Если вы lok только в _invokeQueue, вы увидите много вещей, которые вам понравятся имя провайдера, как показано ниже, но его тип тоже (директива, контроллер , ...) ;

Но вы чувствуете, что это сложная вещь, это не очень хорошая практика, но это действительно очень забавно.

Не используйте его в производстве!

+0

Конечно, вы можете реализовать пользовательскую услугу, и каждый контроллер скажет этой службе: я ... Тогда вы можете позвонить этой службе –

+3

Это было очень полезно при определении проблем с инъекцией зависимостей после изменения переменной моего проекта с помощью uglifyJS , Благодаря! 'angular.module ('MYAPP') [ '_ invokeQueue']. ​​Foreach (функция (значение) { console.log (значение [2] [1]) })' Вы можете увидеть использование DI Аннотации или их отсутствие: D –

+5

, если вы используете 'values ​​[2] [0]', вы фактически получаете список инъекционных имен 'angular.module ('qirt') ['_ invokeQueue']. ​​ForEach (function (value) {console.log (значение [2] [0])}) ' –

Смежные вопросы