2016-04-28 81 views
2

無法從服務中獲得的控制器中的數據

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: Cannot read property 'then' of undefined.

最主要的是對服務的調用被生成,如果我嘗試在服務中的控制檯上打印結果,數據就在那裏。但是,我無法獲取我的控制器中的數據。

回答

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; 
     }) 
}) 
+0

現在工作非常好。謝謝 ! –

0

您只需忘記返回$ http承諾,這就是爲什麼undefined被返回。你需要做到以下幾點:

... 
return $http({ ... 
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; 

}); 
相關問題