Angularjs 将$http和$scope注入控制器内的函数

Angularjs 将$http和$scope注入控制器内的函数,angularjs,Angularjs,我之前在尝试将$scope和$http注入控制器时问了一个类似的问题。现在,我试图通过将代码移动到控制器内的函数中来稍微重构代码。我遇到了类似的问题,似乎无法掌握角度依赖注入的机制。下面是我的新代码。$scope和$http都未定义。我试图做的是在didSelectLanguage()激发时发出http请求,并将结果数据从父控制器分配给$scope中的“image”变量。有人能告诉我在这个例子中依赖注入应该如何工作吗 angular.module('myApp.controllers', [])

我之前在尝试将$scope和$http注入控制器时问了一个类似的问题。现在,我试图通过将代码移动到控制器内的函数中来稍微重构代码。我遇到了类似的问题,似乎无法掌握角度依赖注入的机制。下面是我的新代码。$scope和$http都未定义。我试图做的是在didSelectLanguage()激发时发出http请求,并将结果数据从父控制器分配给$scope中的“image”变量。有人能告诉我在这个例子中依赖注入应该如何工作吗

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;
            });

        }

  }])

在Michelle Tilley的评论和文章的帮助下,我解决了以下问题。但是,我会一直保留这个问题,直到其他人回答,或者直到我理解到可以写一个解释为止

controller('ImagesCtrl', ['$scope', '$http', '$injector', function ($scope, $http, $injector) {

    $scope.didSelectLanguage=function() {

            $http.jsonp('http://localhost:3000/image?quantity=1&language='+this.language+'&Flag=&callback=JSON_CALLBACK')
            .success(function(data){
            $scope.$parent.image = data;
            });

        }

  }])

创建控制器时:

angular.module('myApp.controllers',[])。
控制器('ImagesCtrl',['$scope','$http',函数($scope,$http){
// ...
}]);
由于以下原因,控制器函数体中的内容将自动访问
$scope
$http
。因此,无需为
$scope
上的函数指定任何附加内容,即可访问这些内容:

angular.module('myApp.controllers',[])。
控制器('ImagesCtrl',['$scope','$http',函数($scope,$http){
$scope.didSelectLanguage=function(){
$http.jsonp('http://localhost:3000/image?quantity=1&language=“+this.language+”&Flag=&callback=JSON_callback”);
.成功(功能(数据){
$scope.$parent.image=数据;
});
}
}]);
当运行
didSelectLanguage
时,它会看到对
$http
的引用,并从函数中伸入外部函数以获取引用的值;成功回调中的
$scope
也会发生同样的情况


因此,简而言之,没有必要向您的
didSelectLanguage
函数传递任何参数,在这种情况下也没有任何理由使用
$injector

这不是您问题的直接答案,而是我在上写的文章(也是AngularJS wiki上的“理解依赖注入”),特别是
$injector
部分,解释了DI如何在较低级别上工作,并可能帮助您理解某些代码工作或不工作的原因。这是一篇优秀的文章+两个都是1。