Apakah ada cara untuk membuat ekspresi sesuatu seperti ng-class
menjadi bersyarat?
Misalnya, saya sudah mencoba yang berikut ini:
<span ng-class="{test: 'obj.value1 == \'someothervalue\''}">test</span>
Masalah dengan kode ini adalah bahwa apa pun obj.value1
itu, uji kelas selalu diterapkan pada elemen. Melakukan ini:
<span ng-class="{test: obj.value2}">test</span>
Selama obj.value2
tidak sama dengan nilai kebenaran, kelas dalam tidak diterapkan. Sekarang saya dapat mengatasi masalah dalam contoh pertama dengan melakukan ini:
<span ng-class="{test: checkValue1()}">test</span>
Di mana checkValue1
fungsinya terlihat seperti ini:
$scope.checkValue1 = function() {
return $scope.obj.value === 'somevalue';
}
Saya hanya ingin tahu apakah ini ng-class
seharusnya bekerja. Saya juga membangun arahan khusus di mana saya ingin melakukan sesuatu yang mirip dengan ini. Namun, saya tidak dapat menemukan cara untuk menonton ekspresi (dan mungkin itu tidak mungkin dan alasan mengapa ia bekerja seperti ini).
Berikut ini adalah plnkr untuk menunjukkan apa yang saya maksud.
ng-class="'label-success': obj.value1 == 'Ready', 'label-warning': obj.value1 == 'On hold'}"
Jawaban:
Upaya pertama Anda hampir benar, seharusnya berhasil tanpa tanda kutip.
Berikut ini adalah sebuah plnkr .
Arahan ngClass akan bekerja dengan ekspresi apa pun yang mengevaluasi truthy atau falsey, sedikit mirip dengan ekspresi Javascript tetapi dengan beberapa perbedaan, Anda dapat membaca di sini . Jika kondisi Anda terlalu kompleks, maka Anda dapat menggunakan fungsi yang mengembalikan kebenaran atau kesalahan, seperti yang Anda lakukan dalam upaya ketiga Anda.
Sebagai pelengkap: Anda juga dapat menggunakan operator logis untuk membentuk ekspresi logis seperti
sumber
'
sebaliknya jika Anda ingin menambahkan lebih banyak kelas atau jika kelas Anda memiliki tanda hubung atau garis bawah tidak akan berfungsi.ng-class="{'test test-2: obj.value1 === 'value'}"
ng-class="{'test test-2': obj.value1 === 'value'}"
[class.test]="obj.value1 == 'someotervalue'"
.ng-class="{danger:!enabled || (type === 'WHEEL' && !isOnline) }
Menggunakan ng-class di dalam ng-repeat
Untuk setiap status dalam task.status, kelas yang berbeda digunakan untuk baris.
sumber
Angular JS menyediakan fungsi ini dalam Instruksi kelas . Di mana Anda dapat menempatkan kondisi dan juga menetapkan kelas bersyarat. Anda dapat mencapai ini dengan dua cara berbeda.
Tipe 1
Dalam kode ini kelas akan berlaku sesuai dengan nilai statusnya nilai
jika nilai status adalah 0 maka terapkan kelas satu
jika nilai status adalah 1 maka terapkan kelas dua
jika nilai statusnya 2 maka terapkan kelas tiga
Tipe 2
Di kelas mana akan diterapkan berdasarkan nilai status
jika nilai status adalah 1 atau benar maka itu akan menambah kelas test_yes
jika nilai status 0 atau false maka akan menambah kelas test_no
sumber
<div ng-class="{'Image' || 'image': 'image-icon', 'Video' || 'video' || 'aVideo' || 'bVideo' : 'video-icon'}[resource.type]"></div>
Saya melihat contoh yang bagus di atas tetapi mereka semua mulai dengan kurung keriting (json map). Pilihan lain adalah mengembalikan hasil berdasarkan perhitungan. Hasilnya juga bisa berupa daftar nama kelas css (bukan hanya peta). Contoh:
atau
Penjelasan: Jika statusnya aktif, kelas
enabled
akan digunakan. Kalau tidak, kelasdisabled
akan digunakan.Daftar
[]
ini digunakan untuk menggunakan beberapa kelas (bukan hanya satu).sumber
Ada metode sederhana yang dapat Anda gunakan dengan atribut kelas html dan singkatan jika / yang lain. Tidak perlu membuatnya begitu rumit. Cukup gunakan metode berikut.
Selamat Coding, Nimantha Perera
sumber
Saya akan menunjukkan kepada Anda dua metode yang dengannya Anda dapat menerapkan kelas-ng secara dinamis
Langkah 1
Dengan menggunakan operator ternary
Keluaran
Jika kondisi Anda benar maka class1 akan diterapkan ke elemen Anda yang lain class2 akan diterapkan.
Kerugian
Ketika Anda akan mencoba untuk mengubah nilai kondisional pada saat run time kelas tidak akan berubah. Jadi saya akan menyarankan Anda untuk pergi ke step2 jika Anda memiliki persyaratan seperti perubahan kelas dinamis.
Langkah 2
Keluaran
jika kondisi Anda cocok dengan value1 maka class1 akan diterapkan ke elemen Anda, jika cocok dengan value2 maka class2 akan diterapkan dan seterusnya. Dan perubahan kelas yang dinamis akan bekerja dengan baik dengannya.
Semoga ini bisa membantu Anda.
sumber
Sintaks sudut adalah dengan menggunakan operator : untuk melakukan yang setara dengan pengubah if
Tambahkan kelas clearfix ke baris genap. Meskipun demikian, ekspresi dapat berupa apa pun yang dapat kita miliki dalam kondisi normal jika dan harus dievaluasi menjadi benar atau salah.
sumber
Menggunakan fungsi dengan ng-class adalah pilihan yang baik ketika seseorang harus menjalankan logika kompleks untuk memutuskan kelas CSS yang sesuai.
http://jsfiddle.net/ms403Ly8/2/
HTML:
CSS:
JavaScript :
sumber
Gunakan ini
misalnya jika kondisinya adalah [2 == 2], statusnya adalah {true: '...', false: '...'}
sumber
Untuk Angular 2, gunakan ini
sumber
[ngClass]="['base-class', thread.isActive ? 'base-class--active' : '']"
ng-class
adalah Arahan Inti Angular. Di mana Anda dapat menggunakan "Sintaks String", "Sintaks Array", "Ekspresi Evaluasi", "Operator Ternary" dan banyak lagi opsi yang dijelaskan di bawah ini:ngClass Menggunakan Sintaks String
Ini adalah cara paling sederhana untuk menggunakan ngClass. Anda bisa menambahkan variabel Angular ke kelas-ng dan itu adalah kelas yang akan digunakan untuk elemen itu.
Contoh Demo dari ngClass Menggunakan String Syntax
ngClass Menggunakan Sintaks Array
Ini mirip dengan metode sintaksis string kecuali Anda dapat menerapkan beberapa kelas.
ngClass Menggunakan Ekspresi yang Dievaluasi
Metode yang lebih maju dalam menggunakan ngClass (dan yang mungkin paling sering Anda gunakan) adalah mengevaluasi ekspresi. Cara kerjanya adalah jika variabel atau ekspresi mengevaluasi
true
, Anda bisa menerapkan kelas tertentu. Jika tidak, maka kelas tidak akan diterapkan.Contoh ngClass Menggunakan Ekspresi yang Dievaluasi
ngClass Menggunakan Nilai
Ini mirip dengan metode ekspresi yang dievaluasi kecuali Anda hanya bisa membandingkan beberapa nilai dengan satu-satunya variabel.
ngClass Menggunakan Operator Ternary
Operator ternary memungkinkan kita menggunakan singkatan untuk menentukan dua kelas yang berbeda, satu jika ekspresi benar dan satu untuk false. Berikut adalah sintaks dasar untuk operator ternary:
Mengevaluasi Nomor Pertama, Terakhir atau Spesifik
Jika Anda menggunakan
ngRepeat
direktif dan Anda ingin menerapkan kelas kefirst
,last
atau nomor tertentu dalam daftar, Anda dapat menggunakan sifat khusus daringRepeat
. Ini termasuk$first
,$last
,$even
,$odd
, dan beberapa orang lainnya. Berikut ini contoh cara menggunakannya.sumber