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

前端之家收集整理的这篇文章主要介绍了angularjs – 将$http和$scope注入控制器内的函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在尝试将$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;
            });

        }

  }])
创建控制器时:
angular.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.

原文链接:https://www.f2er.com/angularjs/142602.html

猜你在找的Angularjs相关文章