Saya telah menemukan masalah ketika menerapkan kelas di dalam elemen tabel ketika saya memiliki satu kelas yang sudah diterapkan ke seluruh tabel (misalnya, warna yang diterapkan pada baris aneh <myClass tbody tr:nth-child(even) td>
). Tampaknya ketika Anda memeriksa elemen dengan Alat Pengembang , element.style
gaya tidak ditugaskan. Jadi alih-alih menggunakan ng-class
, saya sudah mencoba menggunakan ng-style
, dan dalam hal ini, atribut CSS baru muncul di dalamnya element.style
. Kode ini sangat bagus untuk saya:
<tr ng-repeat="element in collection">
[...amazing code...]
<td ng-style="myvar === 0 && {'background-color': 'red'} ||
myvar === 1 && {'background-color': 'green'} ||
myvar === 2 && {'background-color': 'yellow'}">{{ myvar }}</td>
[...more amazing code...]
</tr>
Myvar adalah apa yang saya evaluasi, dan dalam setiap kasus saya menerapkan gaya untuk masing <td>
- masing tergantung pada nilai myvar , yang menimpa gaya saat ini yang diterapkan oleh kelas CSS untuk seluruh tabel.
MEMPERBARUI
Jika Anda ingin menerapkan kelas ke tabel misalnya, saat mengunjungi halaman atau dalam kasus lain, Anda dapat menggunakan struktur ini:
<li ng-class="{ active: isActive('/route_a') || isActive('/route_b')}">
Pada dasarnya, apa yang kita butuhkan untuk mengaktifkan kelas-ng adalah kelas untuk diterapkan dan pernyataan benar atau salah. Benar berlaku kelas dan palsu tidak. Jadi di sini kita memiliki dua pemeriksaan rute halaman dan OR di antara mereka, jadi jika kita berada di /route_a
OR kita berada di route_b
, kelas aktif akan diterapkan.
Ini berfungsi hanya memiliki fungsi logika di sebelah kanan yang mengembalikan benar atau salah.
Jadi dalam contoh pertama, ng-style dikondisikan oleh tiga pernyataan. Jika semuanya salah, tidak ada gaya yang diterapkan, tetapi mengikuti logika kita, setidaknya satu akan diterapkan, jadi, ekspresi logika akan memeriksa perbandingan variabel mana yang benar dan karena array yang tidak kosong selalu benar, yang akan meninggalkan array sebagai return dan dengan hanya satu true, mengingat kita menggunakan OR untuk seluruh respons, gaya yang tersisa akan diterapkan.
Omong-omong, saya lupa memberi Anda fungsi isActive ():
$rootScope.isActive = function(viewLocation) {
return viewLocation === $location.path();
};
PEMBARUAN BARU
Di sini Anda memiliki sesuatu yang saya temukan sangat berguna. Ketika Anda perlu menerapkan kelas tergantung pada nilai variabel, misalnya, ikon tergantung pada konten div
, Anda dapat menggunakan kode berikut (sangat berguna dalam ng-repeat
):
<i class="fa" ng-class="{ 'fa-github' : type === 0,
'fa-linkedin' : type === 1,
'fa-skype' : type === 2,
'fa-google' : type === 3 }"></i>
Ikon dari Font Awesome