2015-05-08 48 views
0

我寫了一個角度js服務,它返回響應。但是當我試圖從控制器調用服務時,我無法得到確切的響應。無法檢索角度js服務的響應

app.service('testservice', function($http){ 
var details= {}; 
details.getResponse = function() { 
     return $http({ 
      url: 'send/getdata', 
      method: 'GET' 
     }).success(function(data, status, headers, config) { 
      this.getdata = data; 
      return getdata; 
     }); 
    }; 
    return details; 

});

我正在使用下面的控制器來調用該方法。

app.controller('testcontroller',[ '$scope', '$http','testService',function($scope, $http,testService) { 
     var targetresponse = testService.getResponse(); 
     alert(JSON.stringify(targetresponse)) 
    })]); 

我收到以下響應, { 「$$狀態」:{ 「地位」:0, 「待定」:[{ 「承諾」:{ 「$$狀態」:{「狀態「:0}}},null,null,null]]}}

請讓我知道這裏的錯誤。

回答

1

你的testservice服務getResponse方法應該返回一個承諾,你可以在你的控制器裏繼續承諾鏈。

服務

details.getResponse = function() { 
    return $http({ 
     url: 'send/getdata', 
     method: 'GET' 
    }).then(function(res) { 
     this.getdata = res.data; 
     return res.data; 
    }); 
}; 

您可以使用解決的承諾,並得到數據的訪問內部.then功能

var targetresponse = testService.getResponse(); 
targetresponse.then(function(data){ 
    alert(JSON.stringify(data)) 
}) 
+0

它對你有幫助嗎? –

0
Srv.getData().then(function (success) { 
     var data = success.data; 
     $scope.myData = data; 
    }, function (error) { 
    }); 

最好的方式來這一點。