Agak terlambat ke pesta, meskipun saya datang dengan solusi untuk masalah yang kurang lebih sama dalam sistem yang saya bangun.
Namun, ide saya adalah untuk menangani SETIAP img
tag gambar secara global.
Saya tidak ingin harus membumbui saya HTML
dengan arahan yang tidak perlu, seperti err-src
yang ditunjukkan di sini. Cukup sering, terutama dengan gambar dinamis, Anda tidak akan tahu jika hilang sampai terlambat. Menambahkan arahan ekstra pada kesempatan gambar hilang tampaknya berlebihan bagi saya.
Sebagai gantinya, saya memperpanjang img
tag yang ada - yang, sebenarnya, adalah apa yang dimaksud dengan arahan Angular.
Jadi - inilah yang saya pikirkan.
Catatan : Ini membutuhkan pustaka JQuery lengkap untuk hadir dan tidak hanya kapal JQlite Angular dengan karena kami menggunakan.error()
Anda dapat melihatnya beraksi di Plunker ini
Arahannya terlihat seperti ini:
app.directive('img', function () {
return {
restrict: 'E',
link: function (scope, element, attrs) {
// show an image-missing image
element.error(function () {
var w = element.width();
var h = element.height();
// using 20 here because it seems even a missing image will have ~18px width
// after this error function has been called
if (w <= 20) { w = 100; }
if (h <= 20) { h = 100; }
var url = 'http://placehold.it/' + w + 'x' + h + '/cccccc/ffffff&text=Oh No!';
element.prop('src', url);
element.css('border', 'double 3px #cccccc');
});
}
}
});
Ketika kesalahan terjadi (yang akan terjadi karena gambar tidak ada atau tidak terjangkau dll) kami menangkap dan bereaksi. Anda dapat mencoba untuk mendapatkan ukuran gambar juga - jika mereka hadir pada gambar / gaya di tempat pertama. Jika tidak, maka tentukan diri Anda sebagai default.
Contoh ini menggunakan placehold.it untuk menampilkan gambar sebagai gantinya.
Sekarang SETIAP gambar, terlepas dari menggunakan src
atau dengan ng-src
sendirinya telah tertutup seandainya tidak ada yang memuat ...