Angularjs $http then方法未设置数组

Angularjs $http then方法未设置数组,angularjs,Angularjs,我已经在service.js文件中创建了一个服务,在其中我使用$http获取帖子列表。这是service.js的代码 app.service('PostService', function ($http, $log) { var post =[]; var err = ""; $http({ method : 'GET', url : 'http://myblog.local/wp-json/wp/v2/posts' }) .then(funct

我已经在service.js文件中创建了一个服务,在其中我使用$http获取帖子列表。这是service.js的代码

app.service('PostService', function ($http, $log) {
var post =[];
var err = "";

$http({
        method : 'GET',
        url : 'http://myblog.local/wp-json/wp/v2/posts'
    })
    .then(function(response){
        post = response.data;
    }, function(reason){
        err = reason.data.message;
    });

this.getPost = function () {
    return post;
};
this.getError = function () {
    return err;
};});
这里是我使用服务的控制器:

app.controller('BlogController', function($scope, $log, PostService){
    $scope.postModel = PostService.getPost();
    $scope.errorMessage = PostService.getError();
});

每次我调用getPost和getError方法时,它都不会给我任何东西。尽管$http已成功从url获取响应。那么为什么方法没有设置变量post和err。

您使用的调用服务器的模式不正确。Http调用是异步操作,因此在运行getPost()时执行代码需要一些时间。getPost()是一个简单的函数,即使值仍然为空,也会在调用后返回值。所以这里需要做的是返回Http调用,并在它返回值之后将其分配给所需的模型

app.service('PostService', function ($http, $log) {
var post =[];
var err = "";


this.getPost = function () {
   return $http({
        method : 'GET',
        url : 'http://myblog.local/wp-json/wp/v2/posts'
    })
    .then(function(response){
        return response.data;
    }, function(error){
        return error;
    });
};

});


app.controller('BlogController', function($scope, $log, PostService){
    PostService.getPost().then(function(post){
        // here you can put logic to check is post an data or error
        $scope.postModel = post;
    });
});