2014-10-26 3 views
0

Недавно я начал изучать AngularJS. Моя проблема заключается в следующем. Я не могу получить доступ к данным, возвращаемым $ http.get() вне вызова метода.angularjs Переменная не может быть вызвана вызовом боковой функции

Код:

(function(){ 
    var productApp = angular.module('productApp', []); 

    productApp.controller('ProductController', ['$http', function($http){ 
     var store = this; 
     store.products = []; 

     $http.get('http://localhost:8080/VeggieFresh/veggie/product/1') 
     .success(function(data){ 
      store.products = data; 
      console.log(data); 
     }); 
     console.log(store.products); 
    }]); 

})(); 

При печати данных в $ http.get() метод, это может быть распечатан без каких-либо проблем, но когда я пытаюсь напечатать его вне метод; он отображает пустой массив.

Я думаю, из-за этого я не могу получить доступ к этим данным и по HTML. Любая помощь в этом отношении высоко ценится.

ответ

0

Следующий код работал для меня.

productApp.controller('ProductController', ['$http', function($http){ 
     var store = this; 
     store.products = []; 

     var promise = $http.get('http://localhost:8080/VeggieFresh/veggie/product/1'); 
     promise.success(function(data){ 
      store.products = data; 
     }); 
}]); 
+0

Хорошо, что это сработало, но вы не используете угловые здесь. –

1

С $ HTTP успехом является асинхронным вызовом вы не получите данные сразу за пределами функции вы можете вызвать функцию для функции «успеха», или использовать функцию обратного вызова

Насколько ваш код, то, вы можете сохранить данные по переменной $ scope

$http.get('http://localhost:8080/VeggieFresh/veggie/product/1') 
    .success(function(data){ 
     $scope.store.products = data; 
     //console.log(data); 
    }); 
0

Функция успеха работает как асинхронная, поэтому вы получите результат внутри функции успеха.

Смежные вопросы