无法从服务中获取控制器中的数据

时间:2016-04-28 12:50:46

标签: angularjs



app.service('customersService', function ($http) {
    this.getCustomer = function (id) {
        $http({
            method: 'GET',
            url: '/getCustomer',
            params: {id: id},
            headers: {'Content-Type': 'application/x-www-form-urlencoded'},
        }).success(function(data) {
            console.log(data);
            return data;
        })
    };
});




无法从服务获取控制器中的数据 此代码的问题是当我尝试运行此

customersService.getCustomer(customerID).then

它会产生如下错误:

  

angular.js:13294 TypeError:无法读取属性'然后'未定义的。

主要是生成对服务的调用,如果我尝试在服务中的控制台上打印结果,那么数据就在那里。但是我无法在控制器中获取数据。

3 个答案:

答案 0 :(得分:2)

您收到该错误,因为您没有从$http GET请求返回承诺。

像这样编辑你的代码:

app.service('customersService', function ($http) {
    this.getCustomer = function (id) {
        return $http({
            method: 'GET',
            url: '/getCustomer',
            params: {id: id},
            headers: {'Content-Type': 'application/x-www-form-urlencoded'},
        });
    };
});

然后在控制器中使用.then()处理响应数据。

app.controller('myController', function($scope, customerService){

    customersService.getCustomer(customerID)
      .then(function(response){
        $scope.data = response;
      })
})

答案 1 :(得分:0)

您只是忘记返回$ http承诺,这就是返回@Override public void onClick(View v) { // Do something with item at mItems.getAdapterPosition() -1 } 的原因。您需要执行以下操作:

undefined

答案 2 :(得分:0)

尝试给定代码。

app.service('customersService', function ($http) {
  var getCustomer = function (id) {
      return $http({
            method: 'GET',
            url: '/getCustomer',
            params: {id: id},
            headers: {'Content-Type': 'application/x-www-form-urlencoded'},
        })
  };

    var customersService = {
            getCustomer: getCustomer
    }
    return ProfileService;

});