编程语言
首页 > 编程语言> > javascript – 服务中的AngularJS $http请求

javascript – 服务中的AngularJS $http请求

作者:互联网

我试图从服务中获取一些数据到控制器中,并且我一直得到一个未定义的变量.

angular
    .module("classes")
    .service("MyService", function ($http) {

        this.foo;
        $http.get("/classes/all").then(function (response) {
            this.fighters = response.data;
            this.foo = this.fighters;
            console.log(this.foo);
        });
        console.log(this.foo);

    })

当我运行这个时,我进入控制台,按此顺序,第11行未定义,然后第9行返回数组.

当我在控制器中尝试获取变量foo时,它也表示未定义.

$scope.fooFighters = MyService.foo;

解决方法:

原因是您的API调用的异步执行.我建议你重写代码以使用将返回promise对象的工厂.无需带来不必要的变量.

angular.module("classes").factory("MyService", function($http) {
    return {
        fighters: function() {
            return $http.get("/classes/all").then(function(response) {
                return response.data;
            });
        }
    }
})

在控制器中,您可以通过在控制器中注入服务然后通过引用它来获取值

 MyService.fighters().then(function(data){
   $scope.fooFighters = data;
  });

标签:javascript,http,angularjs,angularjs-service
来源: https://codeday.me/bug/20190622/1264107.html