2014-12-08 7 views
0

Как сохранить ответ $ http в глобальной переменной $ scope?Как получить доступ к HTTP-ответам за пределами успеха?

$scope.data = []; 
 
$http({ 
 
    method: 'POST', 
 
    url: '/generateId', 
 
    headers: { 
 
     'Content-Type': 'multipart/form-data' 
 
    }, 
 
    data: { 
 
     name: 'userid' 
 
    }, 
 
    transformRequest: function(data, headersGetter) { 
 
     var formData = new FormData(); 
 
     angular.forEach(data, function(value, key) { 
 
      formData.append(key, value); 
 
     }); 
 
     var headers = headersGetter(); 
 
     delete headers['Content-Type']; 
 
     return formData; 
 
    } 
 
}). 
 
success(function(data, status, headers, config) { 
 
    $scope.data = data; 
 
    console.log('$scope.data in success-->', $scope.data);//data is coming 
 
}). 
 
error(function(data, status, headers, config) { 
 
    console.log('id is failed'); 
 
}); 
 
console.log('$scope.data outside-->', $scope.data);//empty array is coming

, как получить доступ ответ вне успеха? Есть ли решение?

Спасибо.

+1

Возможный дубликат [Как вернуть ответ от звонка Ajax?] (Http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – raina77ow

+0

Это другое. Вопрос конкретно в том, что угловой, а не jquery. – orange

+0

$ scope.data должен быть доступен из и за пределами успеха. – orange

ответ

0

scope.data = $resource(...) сохранит обещание и окончательный результат (после получения) в переменной.

Обе области применения - это один и тот же объект.

Причина, по которой $scope.data пуста для вас, заключается в том, что запросы выполняются асинхронно. В то время, когда вы регистрируете значение вне метода успеха, запрос еще не возвращен. Если вы хотите что-то сделать с данными, которые вы должны сделать в методе успеха (если вы просто хотите отобразить его, то угловой должен работать нормально). Попробуйте добавить {{ data }} в свой шаблон html и посмотреть, как данные заселяются.

+0

не работает –

+0

Извините, это для компонента '$ resource'. – orange

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