Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用服务通过AngularJs中的$http get获取数据_Javascript_Angularjs - Fatal编程技术网

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在回答中加入一点细节。解释问题以帮助他人:-请不要编辑问题以显示解决方案。这就是答案所在。原始问题应该保留下来,以便答案具有上下文意义,而不是重复问题