2013-11-29 2 views
0

Смотреть это видео,Как AngularJS возвращает значение из асинхронного вызова?

https://www.youtube.com/watch?v=IRelx4-ISbs

Вы увидите, что код линия писала:

$scope.twitterResult = $scope.twitter.get({q:$scope.searchTerm}); 

Это помет причуда: метод «получить» из «твиттера ', очевидно, является асинхронной функцией, как она возвращает значение в значение $ scope.twitterResult ???

jsFiddle (не может работать причиной щебет API изменился):

http://jsfiddle.net/johnlindquist/qmNvq/

+2

Связанный: http://stackoverflow.com/q/15464273/497356 –

ответ

0

Этот код $scope.twitter.get({q:$scope.searchTerm}); объект возврата Defer. Угловой вид устроен так, что просмотр будет обновляться при разрешении объекта отложенного объекта. Это просто удобство.

+0

Но как разве отложенный объект знает, какая переменная должна измениться? Или отложенный объект может изменить себя? – Xieranmaya

+1

Когда Angular встречает обещание внутри представления, он автоматически устанавливает успешный обратный вызов и заменяет обещание для результирующего значения после его разрешения. Использование обещаний непосредственно в представлении - это функция AngularJS, о которой многие люди не знают, но она открывает множество возможностей для максимально возможного использования наших контроллеров. Пример: http://plnkr.co/edit/pL4lF9JYXZ7EVJNv7PJK?p=preview – iKBAHT

0
$scope.twitterResult = $scope.twitter.get({q:$scope.searchTerm}); 

Ваш код подходит только для углового крепления.

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

Если $scope.twitter является URL, то напишите его

$http.get($scope.twitter, {q:$scope.searchTerm}).success(function (response) { 
$scope.twitterResult=response; 
} 

$ НТТР необходимо определить в

регулятора,

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

  • Нет связанных вопросов^_^