Javascript 使用服务通过AngularJs中的$http get获取数据
我试图将数据从我的服务传回控制器,但没有成功。我可以从我的控制器调用我的服务,并且我知道服务本身可以工作,因为我可以控制台记录服务内的响应,但不能返回控制器 这是我的服务:Javascript 使用服务通过AngularJs中的$http get获取数据,javascript,angularjs,Javascript,Angularjs,我试图将数据从我的服务传回控制器,但没有成功。我可以从我的控制器调用我的服务,并且我知道服务本身可以工作,因为我可以控制台记录服务内的响应,但不能返回控制器 这是我的服务: (function () { angular .module('app') .service('testService', testService); testService.$inject = ['$http']; function testService($http, url) { var b
(function () {
angular
.module('app')
.service('testService', testService);
testService.$inject = ['$http'];
function testService($http, url) {
var baseUrl = "http://getjsondata.com/" + url;
this.getData = function (url) {
$http({
method: 'GET',
url: baseUrl + url,
headers: {'Content-Type': 'application/json'}
})
.then(function (response) {
console.log(response); // THIS WORKS
return response;
})
.catch(function (error) {
return error;
});
};
}
}());
这是在我的控制器内:
vm.getTestData = function (url) {
vm.response = testService.getData(url);
console.log(vm.response);
};
我尝试在testService.getData中将数据作为回调传递回,但没有成功。我还尝试使用工厂而不是服务,但我无法访问控制器中的数据。我还尝试在服务中定义我的函数,getData:function。。。等等
我猜我在服务中的返回语句的行为与我预期的不同。我将感谢任何帮助 getData永远不会返回。在$http前面添加return,然后在控制器中使用
this.getData = function (url) {
return $http({
method: 'GET',
url: baseUrl + url,
headers: {'Content-Type': 'application/json'}
})
};
按ctrl键
vm.getTestData = function (url) {
testService.getData(url).then(function (response) {
vm.response = response;
return response;
})
.catch(function (error) {
return error;
});
};
getData永远不会返回。在$http前面添加return并使用controller@mr.void在回答中加入一点细节。解释问题以帮助他人:-请不要编辑问题以显示解决方案。这就是答案所在。原始问题应该保留下来,以便答案具有上下文意义,而不是重复问题