2016-02-09 1 views
-3

Как отобразить данные réponse (получить) от сервера в AngularJS

в моем коде я должен предупредить $ scope.orders внутри этого контроллера, но это не willll шоу ..

function OrderController($scope,$http) 
{ 
    var orderPromise = $http.get("../api/order"); 

    orderPromise.success(function(data, status, headers, config) 
    { 
     $scope.orders=data 
     alert(JSON.stringify($scope.orders)) // First alert 
    }); 

    orderPromise.error(function(data, status, headers, config) 
    { 
     alert("Error"); 

    }); 

    alert(JSON.stringify($scope.orders)) // Second alert 
} 

Как я могу получить доступ к $ scope.orders за пределы удовольствия успеха() здесь я оповещение $ scope.data в два раза в здесь First Alert показано но Second оповещение ничего показать почему? Как показать второй?

+1

Возможный дубликат [AngularJS: проблема с областью действия в обратном вызове $ http success] (http://stackoverflow.com/questions/25043534/angularjs-scope-issue-in-http-success-callback) – Matheno

+0

Причина первого предупреждения работает, но второй - нет, потому что выполнение первого задерживается до тех пор, пока обещание не будет успешно выполнено ..., которое может занять от миллисекунд до секунд в зависимости от запроса. Тем не менее, второй выполняется почти сразу после создания экземпляра контроллера, так как он запускается сразу после определения обработчиков обещаний (не выполняется). Что именно вы пытаетесь сделать с данными? Если вы просто хотите отобразить его, тогда привяжите $ scope.orders в своем представлении, и он будет автоматически отображаться после того, как обещание будет разрешено. – GPicazo

ответ

1

Второе предупреждение не будет отображаться, потому что ничего не отображается в $scope.orders, когда вы его предупреждаете. Такова природа асинхронных вызовов, только когда вы вводите разделы успеха/ошибки, у вас есть что-то там (или нет ...).

До тех пор, пока сервер не вернет ваш ответ и триггер функций success/error, эта переменная по-прежнему остается незаполненной, так как $scope.orders=data не запущен.

Для получения дополнительной информации вы должны прочитать docs и получить более глубокое понимание того, как работают обещания.

+0

AOmri Как я могу получить доступ к этим $ scope.orders во второй раз для любого решения для этого ... Thnakyou. Я начинаю считать меня –

+0

@ symonkt1 Вы не можете по причине, о которой я упоминал. Только внутри успеха. –

+0

О, о, о Омри. Я получил его, я прочитал doc. Спасибо за ваши комментарии. Еще одна вещь, я могу направить это на завод и перезвонить тому же контролеру? –