Czy można uzyskać listę wszystkich kontrolerów kątowych, które zdefiniowałem? Zasadniczo chcę móc określić, który z nich muszę zaimportować (te, które napisałem) w zależności od tego, które z nich są używane. Jedyny sposób, jaki mogę wymyślić, to przejść przez HTML i znaleźć wszystkie wartości związane z ng-controller
, ale zastanawiałem się, czy istnieje czystszy, bardziej niezawodny sposób.Uzyskaj wszystkie kontrolery Angulara
9
A
Odpowiedz
1
spróbuje użyć _invokeQueue
To może być to, czego szukasz:
angular.module('MyApp')['_invokeQueue'].forEach(function(value){ console.log(value[2][0]) })
_invokeQueue jest wypełniona każdej usługi, która jest dodawana do modułu za pomocą znanego angular.module ("mymodule ') .controller, angular.module (' myModule '). directive i in. połączenia. Każda pozycja w kolejce jest tablicą z trzema elementami. Pierwszy to dostawca, który wywoła usługę , drugi to metoda na dostawcy do użycia , a trzeci element jest tablicą wszystkich argumentów przekazanych do usługi .
1
Można to zrobić za pomocą właściwości modułu _invokeQueue
jak pokazano na this example
var appModule = angular.module('plunker',[]);
angular.module('plunker').controller('TestCtrl', function(){});
angular.module('plunker').controller('TestCtrl2', function(){});
angular.module('plunker').controller('MainCtrl', function($scope) {
$scope.controllers = appModule._invokeQueue.filter(function(el){
return el[0] === "$controllerProvider";
}).map(function(el){
return el[2]["0"];
});
});
1
w którymkolwiek z istniejącego sterownika, skopiuj i wklej poniższy kod będzie wyświetla listę wszystkich kontrolerów.
Uwaga: Zmodyfikuj zmienną aplikacji za pomocą "aplikacji".
var app = angular.module('myApp',[]);
angular.element(document).ready(function(){
var values = app._invokeQueue;
angular.forEach(values, function(value, key) {
if(value[0] == '$controllerProvider'){
console.log(value[2][0]);
}
});
});
Powiązane problemy
- 1. Jak programowo wymieniać wszystkie kontrolery w Railsach
- 2. Jak znaleźć wszystkie kontrolery i akcje
- 3. Ionic Framework bez Angulara
- 4. Kiedy używać elementu Angulara $ $
- 5. Uzyskaj wszystkie elementy iframe
- 6. Uzyskaj wszystkie permutacje plasterka
- 7. Dziwne zachowanie zegarka Angulara $ watch
- 8. Perl, uzyskaj wszystkie wartości mieszania
- 9. Uzyskaj wszystkie dni bieżącego tygodnia?
- 10. NSLocale - uzyskaj wszystkie dostępne języki
- 11. Pobierz dane Ajax do siatki Angulara
- 12. Uzyskaj wszystkie właściwości dla klasy DBpedia
- 13. Uzyskaj wszystkie wystąpienia słowa pomiędzy nawiasami nawiasach
- 14. Uzyskaj wszystkie kombinacje z wielu zagnieżdżonych tablic
- 15. Uzyskaj wszystkie współrzędne pikseli między 2 punktami
- 16. Uzyskaj wszystkie zaznaczone komórki w google skryptu
- 17. Uzyskaj wszystkie identyfikatory postów w Wordpressie
- 18. Uzyskaj wszystkie czynniki liczby (iteratory showdown :)
- 19. Uzyskaj wszystkie widoczne obiekty na lListView
- 20. Uzyskaj wszystkie odziedziczone klasy ogólnej klasy abstrakcyjnej
- 21. Uzyskaj wszystkie zatwierdzenia git od ostatniego tagu
- 22. Uzyskaj wszystkie dokumenty projektowe w CouchDB
- 23. Uzyskaj wszystkie wartości w NameValueCollection na ciąg
- 24. Uzyskaj wszystkie możliwe kombinacje znaków w tablicy
- 25. Uzyskaj wszystkie __slots__ z klasy pochodnej
- 26. Uzyskaj wszystkie bezpośrednie dzieci i nic głębszego:
- 27. Uzyskaj wszystkie zdefiniowane funkcje dla obiektu
- 28. Uzyskaj wszystkie metody instancji obiektu coffeescript
- 29. Uzyskaj wszystkie parametry ze strony JSP
- 30. HtmlAgilityPack Uzyskaj wszystkie linki wewnątrz DIV
Cieszę się, że nie skorzystałeś z oryginalnego pomysłu, ponieważ ... Jeśli przechodzisz przez HTML, nie znajdziesz żadnych kontrolerów, jeśli ludzie używają ** ui-router ** i 'controllerAs '. – byxor
@BrandonIbbotson To bardziej wewnętrzne rozwiązanie, a wszystkie kontrolery używają 'ng-kontrolera', więc nie byłoby to zbyt dużym problemem. Jestem świadomy "ui-routera", ale nie jest to do tego wykorzystywane. Jakieś sugestie? –
'ngRoute' pozwala również zdefiniować kontroler dla określonego html w plikach konfiguracyjnych js. – nubinub