通过Angular JS获取外部json文件

时间:2016-10-09 22:18:07

标签: angularjs angular-http

我正在尝试基于AngularJS https://github.com/kmaida/angular-faceted-search

实施分面搜索

由于该示例基于JS中包含的数据集,因此我尝试远程加载JSON文件。 (顺便说一句,在angularJS中总的noob。)

example中,控制器被定义为:

myApp.controller('MainCtrl', function($scope, Helpers) {

还有2名助手defined

myApp.factory('Helpers', function() {...

我试图在第三个助手中注入$ http,我的代码:

            ,
//below line 30 in https://github.com/kmaida/angular-faceted-search/blob/master/app.js
            fetchData: function (){
                var resultjson=[]
                $http.get('/api/data.json').success(function(data) {
                    resultjson=data
                    console.log(data);
                });
                console.log(resultjson);
                return resultjson;
            }

新定义的变量 resultjson 在成功函数中有一个值,但在该点之外没有值。 任何人都可以帮我正确地获取数据?感谢支持。

1 个答案:

答案 0 :(得分:1)

如果您想从$http接收数据,则必须使用promises。现在,您在从api结束点收到值之前返回resultjson。 您应该返回承诺,一旦承诺得到解决,价值将在承诺中。

由于$ http返回promise的事实,你可以直接返回它,而不将它包装在另一个promise中。

fetchData: function (){
               return $http.get('/api/data.json');
            }

您可以访问控制器中的数据并分配到范围:

Helpers.fetchData().then(function(data){
    $scope.items = data.data;
})