Di angularjs Anda memiliki tag ng-src yang bertujuan agar Anda tidak akan menerima kesalahan untuk url yang tidak valid sebelum angularjs mengevaluasi variabel yang ditempatkan di antara {{
dan }}
.
Masalahnya adalah bahwa saya menggunakan beberapa DIV dengan background-image
set ke url. Saya melakukan ini karena properti CSS3 yang sangat baik yang memotong background-size
gambar ke ukuran persis DIV.
Satu-satunya masalah adalah bahwa saya menerima banyak kesalahan untuk alasan yang sama persis mereka membuat tag ng-src: Saya punya beberapa variabel di url dan browser berpikir gambar itu tidak ada.
Saya menyadari bahwa ada kemungkinan menulis kasar {{"style='background-image:url(myVariableUrl)'"}}
, tetapi ini tampaknya 'kotor'.
Saya telah mencari banyak dan tidak dapat menemukan cara yang tepat untuk melakukan ini. Aplikasi saya menjadi berantakan karena semua kesalahan ini.
Yang ini bekerja untuk saya
sumber
imgURL
tidak disetel dan mencoba lagi ketikaimgURL
akan ditetapkan.Jawaban di atas tidak mendukung interpolasi yang dapat diamati (dan menghabiskan banyak waktu untuk mencoba debug). The jsFiddle Link di @BrandonTilley komentar adalah jawaban yang bekerja untuk saya, yang saya akan kembali posting di sini untuk pelestarian:
Contoh menggunakan controller dan template
Pengendali:
Templat:
Gunakan dalam template seperti ini:
atau seperti itu:
sumber
Dimungkinkan juga untuk melakukan hal seperti ini dengan
ng-style
:yang tidak akan mencoba mengambil gambar yang tidak ada.
sumber
Mirip dengan jawaban hooblei, hanya dengan interpolasi:
sumber
<span ng-style="{'background-image': 'url(/styles/images/profile.png)'}" style="background-image: url("");"></span>
. Pendekatan @hoblei berhasil.hanya masalah selera tetapi jika Anda lebih suka mengakses variabel atau fungsi secara langsung seperti ini:
alih-alih interpolasi seperti ini:
maka Anda dapat menentukan sedikit direktif berbeda dengan
scope.$watch
yang akan melakukan$parse
pada atributada lebih banyak latar belakang tentang ini di sini: AngularJS: Perbedaan antara metode $ mengamati dan $ menonton
sumber
@waktu jawaban Anda baik-baik saja. Tetapi jika halaman Anda memiliki $ http.get maka Anda telah menggunakan ng-if
di pabrik
di area pengontrol
dan tampilan jika Anda menggunakan ng-jika seperti di bawah ini maka Anda akan mendapatkan gambar dengan interpolasi sebaliknya, Anda tidak bisa mendapatkan gambar karena direktif mendapatkan nilai sebelum permintaan HTTP.
sumber
Saya telah menemukan dengan 1,5 komponen yang mengabstraksi styling dari DOM agar bekerja dengan baik dalam situasi async saya.
Contoh:
Dan di controller, ada yang suka ini:
sumber
Karena Anda sebutkan
ng-src
dan sepertinya Anda ingin halaman selesai render sebelum memuat gambar Anda, Anda dapat mengubah jawaban jaime untuk menjalankan arahan asli setelah browser selesai render.Posting blog ini menjelaskan hal ini dengan cukup baik; pada dasarnya, Anda memasukkan
$timeout
pembungkus untukwindow.setTimeout
sebelum fungsi panggilan balik di mana Anda membuat modifikasi ke CSS.sumber