Zadałem podobne pytanie wcześniej podczas próby wstrzyknięcia $ scope i $ http do kontrolera Cannot call method 'jsonp' of undefined in Angular.js controller. Teraz próbuję nieznacznie zmienić ten kod, przenosząc kod do funkcji w kontrolerze. Zdarza mi się podobne problemy i wydaje się, że nie potrafię uchwycić mechaniki zastrzyku zależności w Angular. Poniżej znajduje się mój nowy kod. Zarówno $ scope, jak i $ http są niezdefiniowane. Próbuję wykonać żądanie http, gdy didSelectLanguage() odpali i przypisze wynikowe dane do zmiennej "image" w $ scope od kontrolera nadrzędnego. Czy ktoś może oświecić mnie, jak powinien działać zastrzyk zależności w tym przykładzie?
angular.module('myApp.controllers', []).
controller('ImagesCtrl', ['$scope', '$http', function ($scope, $http) {
$scope.didSelectLanguage=function($scope, $http) {
console.log($scope);
$http.jsonp('http://localhost:3000/image?quantity=1&language='+this.language+'&Flag=&callback=JSON_CALLBACK')
.success(function(data){
$scope.image = data;
});
}
}])
To nie jest bezpośrednia odpowiedź na twoje pytanie, ale artykuł, który napisałem w [Jakie "rzeczy" mogą zostać wstrzyknięte innym w Angular.js?] (Http://stackoverflow.com/questions/16828287/what -tings-can-be-injected into-in-angleular-js/16829270 # 16829270) (także "Zrozumienie iniekcji zależnej" na wiki AngularJS), w szczególności część na '$ injector', wyjaśnia, jak działa DI niższy poziom i może pomóc ci zrozumieć, dlaczego dany kod działa lub nie działa. –
To wyjątkowy artykuł! +1 w obu. – hughesdan