在尝试将$scope和$http注入到控制器
Cannot call method ‘jsonp’ of undefined in Angular.js controller中时,我曾经提出过类似的问题.现在,我正在尝试通过将代码移动到控制器中的函数来轻微重构该代码.我遇到类似的问题,似乎无法掌握角色依赖注入的机制.以下是我的新代码. $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; }); } }])
创建控制器时:
原文链接:https://www.f2er.com/angularjs/142602.htmlangular.module('myApp.controllers',[]). controller('ImagesCtrl',$http) { // ... });
控制器主体内部的内容自动可以访问$scope和$http,因为closures.因此,没有必要为$scope指定任何额外的函数来访问这些内容:
angular.module('myApp.controllers',$http) { $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; }); } });
当didSelectLanguage运行时,它会看到对$http的引用,并从函数外部到外部函数中获取引用的值;对于成功回调中的$scope也是一样.
因此,简而言之,没有必要将任何参数传递给您的didSelectLanguage函数,在这种情况下也没有任何理由使用$inject.