Poniższy plik "działa" (to poczucie, że nie generuje żadnych błędów):
<!doctype html>
<html ng-app="modx">
<script src="http://code.angularjs.org/angular-1.0.0rc7.js"></script>
<script>
angular.module("modx", [], function($routeProvider) {
});
</script>
</html>
ale to
<!doctype html>
<html ng-app="modx">
<script src="http://code.angularjs.org/angular-1.0.0rc7.js"></script>
<script>
angular.module("modx", [], function($routeProvider, $rootScope) {
});
</script>
</html>
podaje błąd:
Błąd: nieznany dostawca: $ rootScope z
pliku źródłowego modx : http://code.angularjs.org/angular-1.0.0rc7.js
Linia: 2491
WTF?
Odpowiedzi:
Nie możesz zapytać na przykład w fazie konfiguracji - możesz zapytać tylko o dostawców.
Więcej informacji można znaleźć pod adresem http://docs.angularjs.org/guide/module .
źródło
config
? powiedzieć ścieżkę główną w aplikacji asp.net? Po prostu nie chcę używać zmiennych globalnych i chciałemng-init='root:<%= myroot %>'
używaćroot
wartości wmodule.config
.angular.module('config', []).constant('appRoot', '/local/js/app');
(ten kod byłby generowany przez twój serwer (możesz nawet wygenerować go jako plik JS, zamiast wstawiać go do pliku html). Następnie twoja aplikacja ładuje ten moduł i dzięki temu ma dostęp doappRoot
.Uważam, że następujący „wzorzec” jest bardzo przydatny:
gdzie MainCtrl jest kontrolerem. Czuję się nieswojo polegając na nazwach parametrów funkcji kontrolera, wykonując naśladowanie instancji jeden do jednego z obawy, że mogę zmienić nazwy i zepsuć rzeczy. Zdecydowanie wolę jawnie używać do tego celu $ inject.
źródło
MainCtrl
taki dostęp ?angular.module('myMod', []).controller('theController', controllerFunction); controllerFunction.$inject = []; function controllerFunction() { }
Nie sugeruję używania składni tak, jak to zrobiłeś. Angularjs pozwala mieć różne funkcje, jak chcesz (
run
,config
,service
,factory
, itd ..), które są bardziej professional.In funkcja ta nawet nie trzeba wstrzykiwać, że sam jakmożesz go użyć, jak wiesz.
źródło