Czytam http://www.alexrothenberg.com/2013/02/11/the-magic-behind-angularjs-dependency-injection.html i okazało się, że wtrysk zależności angularjs ma problemy jeśli zminimalizujesz swój javascript więc ja Zastanawiam się, czy zamiast
var MyController = function($scope, $http) {
$http.get('https://api.github.com/repos/angular/angular.js/commits')
.then(function(response) {
$scope.commits = response.data
})
}
powinieneś użyć
var MyController = ['$scope', '$http', function($scope, $http) {
$http.get('https://api.github.com/repos/angular/angular.js/commits')
.then(function(response) {
$scope.commits = response.data
})
}]
w sumie myślałem, że drugi fragment dotyczy starej wersji angularjs, ale ...
Czy powinienem zawsze używać sposobu wstrzyknięcia (drugiego)?
Bezpieczniej jest korzystać z drugiego wariantu, ale można również bezpiecznie używać pierwszego wariantu z ngmin .
AKTUALIZACJA:
Teraz ng-annotate staje się nowym domyślnym narzędziem do rozwiązania tego problemu.
źródło
Tak, musisz użyć jawnego iniekcji zależności (drugi wariant). Ale od Angular 1.3.1 można wyłączyć niejawne wstrzykiwanie zależności, jest to naprawdę pomocne w rozwiązywaniu potencjalnych problemów ze zmianą nazwy na raz (przed minifikacją).
Wyłączanie niejawnego DI przy użyciu
strictDi
właściwości config:Wyłączanie niejawnego DI, przy użyciu
ng-strict-di
dyrektywy:źródło
Po prostu zaznacz, że jeśli używasz
Szlachetka
nie ma potrzeby lubić
ponieważ chrząknięcie podczas minify bierze pod uwagę sposób zarządzania DI.
źródło
Jak powiedział OZ_, użyj ngmin do zminimalizowania całego pliku angular js, takiego jak Directive.js service.js. Następnie możesz użyć kompilatora Closure, aby go zoptymalizować.
ref:
Jak zminimalizować skrypty angularjs
Buduj z YO
źródło
Możesz użyć,
$inject
jak wspomniano tutaj :źródło
Użyj iniekcji ścisłej zależności, aby zdiagnozować problemy
W przypadku niejawnej adnotacji kod ulegnie awarii po zminimalizowaniu.
Z Dokumentów:
Możesz dodać
ng-strict-di
dyrektywę do tego samego elementu, cong-app
w przypadku wybrania ścisłego trybu DI.Tryb ścisły zgłasza błąd za każdym razem, gdy usługa próbuje użyć niejawnych adnotacji.
Może to być przydatne do określenia problemów.
Więcej informacji znajdziesz w
źródło