Простой вопрос, я загружаю изображения с внешнего сайта, и я хочу удержать свой resolve
, пока они не закончат загрузку.AngularJS Разрешите дождаться загрузки внешних изображений
Моего resolve
свойства для конкретного представления выглядит следующим образом:
resolve :{
item: function($q, $route, $http, $timeout){
var deferred = $q.defer();
console.log("Params are " + $route.current.params.id);
$http.get('/api/post/' + $route.current.params.id, { cache: true}).
success(function(data) {
if(data.post.length === 1){
$http.get('/api/designerAlso/' + data.post[0].designer + '/' + data.post[0].gender, { cache: true})
.success(function(results){
data.post[0].sameDesigner = results.sameDesigner;
successCb(data.post);
});
}else{
successCb(data.post);
}
});
var successCb = function(result){
if (angular.equals(result, [])){
deferred.reject("Sorry, we couldn't find that item!");
}else{
deferred.resolve(result);
}
}
return deferred.promise;
}
}
Он приносит данные из моей базы данных, которая имеет поле под названием imgs
, содержащий массив URL. Можно ли разрешить, как только данные из этих URL-адресов завершили загрузку, или мне не повезло?
спасибо mike. но как назвать «данные» в моем контроллере? – davelab
dave - «данные» - это то, что будет возвращено resol.item. Вы можете быть смущены тем, как свойство разрешения работает в угловом маршрутизаторе. Вы можете ссылаться на свойства, установленные в объекте разрешения, через инъекцию зависимостей в соответствующем контроллере, и у вас будет доступ к решению. – mikeStone
@mikeStone Эй Майк, что делать, если мне нужно серию изображений для полной загрузки до разрешения, поэтому я не могу прикрепить обратный вызов успеха к событию $ http.get. –