У меня есть контроллер AngularJs:контроллер Initialize по запросу АЯКС
function MyController($scope, $http) {
// as $http.get() is async, success() returns promise but
// I need the actual value 'items'
var promise = $http.get(...)
.success(function(response) {return response.items;});
<waitForAjaxCall>
$scope.items = promise.get?();
$scope.firstItem = $scope.items[0];
//do stuff using $scope.firstItem
}
var myApp = angular.module('myApp',[]);
myApp.controller('MyController', ['$scope', '$http', MyController]);
Как я могу гарантировать, что $scope.items
инициализируется значением, возвращаемым вызовом АЯКС перед $scope.firstItem = ...
задания? Другой подход, который я вижу, состоит в том, чтобы обернуть items
в фабрику angularjs, которая вызывает $ http, но мне все еще нужно ждать, пока вызов ajax будет завершен внутри этой фабрики.
Почему бы просто не установить значение $ scope.items в результате успешного выполнения обещания? – Sneaksta
@Sneaksta adaiu, в этом случае $ scope.firstItem может относиться к неинициализированному значению – Nutel
Ah right. Не вижу ссылки на $ scope.items на следующей строке, извините. Ну, не могли бы вы просто определить $ scope.firstItem в обратном вызове успеха? – Sneaksta