Aplikasi yang saya bangun mengharuskan pengguna saya untuk mengatur 4 informasi sebelum gambar ini bahkan memiliki kesempatan untuk memuat. Gambar ini adalah bagian tengah dari aplikasi, sehingga tautan gambar yang rusak membuatnya tampak seperti semuanya borked. Saya ingin gambar lain menggantikan 404.
Ada ide? Saya ingin menghindari penulisan arahan khusus untuk ini.
Saya terkejut bahwa saya tidak dapat menemukan pertanyaan serupa, terutama ketika pertanyaan pertama dalam dokumen adalah sama!
angularjs
angularjs-directive
will_hardin
sumber
sumber
Jawaban:
Ini adalah arahan yang cukup sederhana untuk melihat kesalahan memuat gambar dan mengganti src. (Plunker)
Html:
Javascript:
Jika Anda ingin menampilkan gambar kesalahan ketika ngSrc kosong Anda dapat menambahkan ini (Plunker) :
Masalahnya adalah ngSrc tidak memperbarui atribut src jika nilainya kosong.
sumber
src
atribut untukerr-src
gambar: plnkr.co/edit/b05WtghBOHkxKdttZ8q5Agak 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, sepertierr-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:
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 denganng-src
sendirinya telah tertutup seandainya tidak ada yang memuat ...sumber
Untuk memperluas solusi Jason untuk menangkap kedua kasus kesalahan pemuatan atau string sumber kosong, kita bisa menambahkan arloji.
Html:
Javascript:
sumber
ng-if
dalam template (string src kosong)attrs.$observe('ngSrc', function(value) {...});
, itulah yang ngSrc gunakan secara internal alih-alih $ watchdalam HTML:
sumber
Jika gambar 404 atau gambar kosong nol apa pun yang tidak perlu direktif Anda cukup menggunakan filter ng-src seperti ini :)
sumber
Saya menggunakan sesuatu seperti ini, tetapi mengasumsikan bahwa team.logo valid. Ini memaksa default jika "team.logo" tidak disetel atau kosong.
sumber
Anda tidak perlu sudut untuk itu, atau bahkan CSS atau JS. Jika Anda mau, Anda dapat membungkus jawaban ini (ditautkan) dalam arahan sederhana untuk membuatnya lebih sederhana, seperti atau sesuatu, tetapi ini adalah proses yang cukup sederhana ... cukup bungkus dengan tag objek ...
Bagaimana cara menyembunyikan ikon yang rusak Ikon hanya menggunakan CSS / HTML (tanpa js)
sumber
Apakah ada alasan khusus Anda tidak dapat mendeklarasikan gambar mundur dalam kode Anda?
Seperti yang saya mengerti, Anda memiliki dua kemungkinan kasus untuk sumber gambar Anda:
Saya pikir ini harus ditangani oleh aplikasi Anda - jika URL yang benar saat ini tidak dapat ditentukan, alih-alih berikan URL gambar loading / fallback / placeholder.
Alasannya adalah bahwa Anda tidak pernah memiliki gambar 'hilang', karena Anda telah secara eksplisit mendeklarasikan URL yang benar untuk ditampilkan kapan saja.
sumber
Saya sarankan Anda mungkin menggunakan arahan UI Utils 'if statement' direktif untuk menyelesaikan masalah Anda, seperti yang ditemukan di http://angular-ui.github.io/ . Saya baru saja menggunakannya untuk melakukan hal yang persis sama.
Ini belum diuji, tetapi Anda dapat melakukan sesuatu seperti:
Kode pengontrol:
(atau lebih sederhana)
HTML dalam Tampilan:
<img ui-if="showImage()" ng-src="images/{{data.value}}.jpg" />
Atau bahkan lebih sederhana, Anda bisa menggunakan properti lingkup:
Kode pengontrol:
HTML dalam Tampilan:
<img ui-if="showImage" ng-src="images/{{data.value}}.jpg" />
Untuk gambar placeholder, cukup tambahkan
<img>
tag lain yang serupa tetapi tambahkanui-if
parameter Anda sebelumnya dengan tanda seru (!
), dan buat ngSrc memiliki path ke gambar placeholder, atau cukup gunakansrc
tag sesuai HTML biasa.misalnya.
<img ui-if="!showImage" src="images/placeholder.jpg" />
Jelas, semua contoh kode di atas mengasumsikan bahwa masing-masing value1, value2, value3 dan value4 akan sama dengan
null
/false
ketika masing-masing dari 4 informasi Anda tidak lengkap (dan dengan demikian juga dengan nilai booleantrue
ketika mereka selesai).PS. Proyek AngularUI baru-baru ini telah dipecah menjadi sub-proyek, dan dokumentasi untuk
ui-if
tampaknya hilang saat ini (mungkin ada dalam paket di suatu tempat). Namun, cukup mudah untuk digunakan seperti yang Anda lihat, dan saya telah mencatat 'masalah' Github pada proyek UI Angular untuk menunjukkannya kepada tim juga.UPDATE: 'ui-if' hilang dari proyek AngularUI karena sudah terintegrasi ke dalam kode inti AngularJS! Namun hanya pada v1.1.x, yang saat ini ditandai sebagai 'tidak stabil'.
sumber
ng-if
membuatnya menjadi btw inti (pada 1.1.5 jika saya tidak salah).Inilah solusi yang saya buat dengan menggunakan javascript asli. Saya memeriksa jika gambar rusak lalu menambahkan kelas ke gambar untuk berjaga-jaga dan mengubah sumber.
Saya mendapat bagian dari jawaban saya dari jawaban Quora http://www.quora.com/How-do-I-use-JavaScript-to-find-if-an-image-is-broken
sumber
Datang dengan solusi saya sendiri. Ini menggantikan gambar baik jika src atau ngSrc kosong, dan jika img mengembalikan 404.
(garpu solusi @Darren)
sumber
Ini hanya akan memungkinkan untuk mengulang dua kali, untuk memeriksa apakah ng-src tidak ada lagi menggunakan err-src, ini mencegah pengulangan berlanjut.
sumber