mufenman
@mufenman
пытаюсь кодить на стороне клиента

Angular js Как получить data для дальнейшей работы с массивом далее в контроллере?

$http.get('data/category.json').success(function(data){
$scope.category = data
});
$scope.category - вне success функции, консоль выводит андефайнед
  • Вопрос задан
  • 276 просмотров
Решения вопроса 1
1. success deprecated, используйте Promises.
Пример:
var promise = $http.get('data/category.json');
promise
.then(
    function(data){
        $scope.category = data
    }, 
    function(error) {
        console.log(error);
    }
);

Если вы хотите что-то сделать с массивом, можете сделать это в .then выражении.
Например
promise.then(function1).then(function2).then(function3)

Ну и вообще, почитайте что такое Promise API, например тут: Promises API
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
madmages
@madmages
Человек прямоходящий
да, потому что запрос идет асинхронно. вне функции succsess этих данных нет еще, а внутри этой функции они приходят с сервера.
Ответ написан
drugoi
@drugoi
Front-end Developer
Потому что он асинхронный (success).
Вызывайте функцию, которая будет работать с данными из success и передавайте туда data.
Пример:
var workIngWithData = function(dataObj) {
  console.info(dataObj);
  // Здесь можно работать с data
};
$http.get('data/category.json').success(function(data) {
  $scope.category = data;
  workIngWithData(data);
});
Ответ написан
DJZT
@DJZT
Laravel - code for you
perem = $this;
$http.get('data/category.json').success(function(data){
perem = data;
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы