Angularjs $ http.get服务不将数据返回给调用控制器函数

时间:2015-05-20 11:30:39

标签: angularjs service controller

大家好我确信这个问题有一个简单的解决办法,但我似乎无法自己找到它......

我有一个控制器,通过调用定义为GetDataService的服务将数据分配给$ scope.items变量

$scope.items = GetDataService.getData('/getBroadcastSourceList/1');

服务设置如下:

angular.module('appName')
  .service('GetDataService', function($http, WebServiceURL) {
    this.getData = function(ServiceParameter) {
      $http.get(WebServiceURL + ServiceParameter)
        .then(function(res){
          return res.data;
        });
    };
  });

我已经在GetDataService中执行了我的代码,并且可以看到res.data确实包含所有相关数据,但是这些数据不会发送到我的控制器中的$ scope.items。

我还通过更改我的服务来检查控制器端的一切情况如下:

angular.module('appName')
      .service('GetDataService', function($http, WebServiceURL) {
        this.getData = function(ServiceParameter) {
           return [{
                     Day: "Monday",
                     Language: "English "
                   }]
        };
      });

这会填充$ scope.items,所以问题必须在这里:

$http.get(WebServiceURL + ServiceParameter)
        .then(function(res){
          return res.data;
        });

我做错了什么?

2 个答案:

答案 0 :(得分:4)

$ http服务本质上是异步的,因此您需要在回调中分配数据

GetDataService.getData('/getBroadcastSourceList/1').then(function(data) {
  $scope.items=data;
})

此外,您的服务没有return,请添加它。

this.getData = function(ServiceParameter) {
      return $http.get(WebServiceURL + ServiceParameter)

答案 1 :(得分:0)

您没有在服务的getData方法上重新调整任何内容,尝试返回一个承诺

MapKit.framework