【发布时间】:2016-05-15 11:46:56
【问题描述】:
我正在尝试在我的 api 中构建一些逻辑,因此它将排除在“图像”字段中具有 URL 的对象,该 URL 返回 4xx、5xx 或超时超过 4000 毫秒。
下面的代码不太好用——因为它仍然允许 404 和空白图像。
谁能建议如何解决这个问题?
另外,它在一个 plunker-http://plnkr.co/edit/7ScnGyy2eAmGwcJ7XZ2Z?p=preview
json 示例:{id:242, image:"www.image.com/1.jpg",name:"blah blah"}
.controller('CardsCtrl', ['$scope', '$http', '$state', '$q', '$ionicLoading', '$ionicModal', 'TDCardDelegate', 'cardsApi', '$http', '$timeout', '$element',
function($scope, $http, $state, $q, $ionicLoading, $ionicModal, TDCardDelegate, cardsApi, $http, $timeout, $element) {
var loginuid = window.localStorage.getItem('uid');
console.log(loginuid);
var MIN_CARDS = 7;
console.log('CARDS CTRL');
$scope.cards = [];
cardsApi.getApiData()
.then(function(result) {
console.log(result.data); //Shows log of API incoming
$scope.cards = result.data;
result.data.forEach(function(card) {
var imgurl = card.image;
console.log(imgurl);
var canceler = $q.defer();
$http.get(imgurl, {
timeout: canceler.promise
})
.then(function mySuccess(response) {
console.log(response.status);
}, function myError(response) {
console.log(response.status);
if (response.status == 404) {
$scope.cards.splice(card, 1);
}
// console.log('deleted');
var imgpid = "#card-image-" + card.vari;
console.log(imgpid);
$(imgpid).parent().remove();
})
.catch(function(err) {
});
$timeout(function() {
$ionicLoading.hide();
canceler.resolve();
}, 4000);
});
})
【问题讨论】:
-
创建一个使用本机图像加载和错误回调的图像加载器指令。不会遇到您将使用 ajax 的 CORS 问题
-
我没有遇到 CORS 问题(我不认为)。你能举个例子吗?
-
在指令中 ...
element.on('load', function(...和element.on('error', func...
标签: javascript angularjs http ionic-framework