0
我寫了一個指令,將替換丟失(404),圖像與圖像佔位符,如果它不存在,像這樣....與指令圖像閃爍來檢查圖像丟失
app.directive('onErrorSrc', function($q) {
return {
link: function(scope, element, attrs) {
function isImage(src) {
var deferred = $q.defer();
var image = new Image();
image.onerror = function() {
deferred.reject(false);
};
image.onload = function() {
deferred.resolve(true);
};
image.src = src;
return deferred.promise;
}
isImage(attrs.myNgSrc).then(function(test) {
attrs.$set('src', attrs.myNgSrc);
console.log("IS IMAGE");
}, function (err) {
console.log("IMAGE ERROR");
attrs.$set('src', attrs.onErrorSrc);
});
}
}
});
..雖然這對於加載一次的靜態頁面非常有用,但對於每隔幾秒刷新一次的表中檢查圖像都不太正確。每次刷新時,表中的任何缺失(404)圖像都會導致閃爍。
我原本就是根據實際元素的錯誤行事,但我認爲這樣會嘗試先加載,失敗,然後替換圖像。我認爲這樣,它至少不會嘗試先將圖像加載到DOM中,然後失敗,但是找出代碼中缺少的圖像,然後分配正確的圖像。看來我錯了!
我知道我正在設置src
而不是ngSrc
,我無法獲得ngSrc
的工作。
任何人都可以提供任何建議/援助?非常感謝。
乾杯,我會給它一個去讓你知道我怎麼走。 – dandanknight 2015-05-18 14:46:40
我已經編輯了包含新指令的答案,該指令可以處理未找到圖像時觸發的錯誤。 – mggSoft 2015-05-18 14:55:17