2016-10-09 2 views
0

Я пытаюсь реализовать многогранный поиск на основе AngularJS https://github.com/kmaida/angular-faceted-searchFetch внешнего файла JSon через Угловое JS

Как пример на основе набора данных, включенных в JS, я пытаюсь загрузить JSON файл удаленно. (общий нооб в угловомJS кстати).

В example, контроллер defiend как:

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

Если вы хотите получать данные от $http, вам придется использовать обещания. Прямо сейчас вы возвращаете resultjson до того, как значение получено от конечной точки api. Вы должны вернуть обещание, и как только обещание будет разрешено, значение будет в обещании.

В связи с тем, что $ http дает обещание, вы можете вернуть его напрямую, не обернув его другим обещанием.

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

и вы можете получить доступ к данным в вашем ваш контроллер и назначить сферу:

Helpers.fetchData().then(function(data){ 
    $scope.items = data.data; 
}) 
Смежные вопросы