加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 07:37:43 所属栏目:安全 来源:网络整理
导读:在尝试将$scope和$http注入到控制器 Cannot call method ‘jsonp’ of undefined in Angular.js controller中时,我曾经提出过类似的问题.现在,我正在尝试通过将代码移动到控制器中的函数来轻微重构该代码.我遇到类似的问题,似乎无法掌握角色依赖注入的机制.
在尝试将$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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读