angular 1.5访问http.get中没有范围的数据

时间:2016-08-01 17:03:59

标签: javascript angularjs get angular-promise

我正在使用Angular 1.5。

我无法从http.get访问http.get中的数据。 让我解释一下:

我有我的组件:

(function(){
'use strict';
class myComponent {
    constructor(
        $http,
        $scope)
    {
        var self = this;
        self.test="this is a test";
        $http.get(MYAPI).then(function(response){
        self.MYDATA = response.data;
        console.log(self.MYDATA)
        });
        console.log(self.test)
        console.log(self.MYDATA)
    }

}
angular.module('myApp')
.component('myApp.test', {
    templateUrl: 'myTemplate.html',
    controller: myComponent,
    controllerAs:'vm',
}); 
})();

console.Log给我:

这是一个测试 - >为测试

undefined - >出了http.get

对象{id:1 ...} - >在http.get

所以我无法通过http.get访问我的数据,这就是我想要的。

1 个答案:

答案 0 :(得分:0)

$http.get是一个异步调用,意味着程序执行不会等待从服务器获取数据。

因此,当执行位于console.log(self.MYDATA)之外的$http.get()时,尚未从服务器获取数据,这就是您获得undefined error的原因。

要解决此问题或处理异步调用,您可以执行以下操作:

 var promise = $http.get(MYAPI);

然后在回调的帮助下以下列方式访问数据:

  promise.then(
            function successCallBack(response)
                {
                   self.MYDATA = response.data;
                   console.log(self.MYDATA)
                }
            ).then(
                function errorCallBack(response)
                {
                    console.log(response);
                }           
            );

这是一篇关于callbacks的好文章,可以帮到你!