我写了一个返回响应的角度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]]} }
请告诉我这里的错误。
答案 0 :(得分:2)
您的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))
})
答案 1 :(得分:0)
Srv.getData().then(function (success) {
var data = success.data;
$scope.myData = data;
}, function (error) {
});
最好的方法。