我正在尝试基于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 在成功函数中有一个值,但在该点之外没有值。 任何人都可以帮我正确地获取数据?感谢支持。
答案 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;
})