AngularJS ngClass bersyarat
Apakah ada cara untuk membuat sebuah ungkapan untuk sesuatu seperti ng-kelas
untuk menjadi bersyarat?
Sebagai contoh, saya telah mencoba yang berikut ini:
<span ng-class="{test: 'obj.value1 == \'someothervalue\''}">test</span>
Masalah dengan kode ini adalah bahwa tidak peduli apa yang obj.value1
adalah, kelas tes selalu diterapkan ke elemen. Lakukan ini:
<span ng-class="{test: obj.value2}">test</span>
Selama obj.value2
tidak sama truthy nilai, kelas tidak diterapkan. Sekarang saya bisa bekerja di sekitar masalah dalam contoh pertama dengan melakukan hal ini:
<span ng-class="{test: checkValue1()}">test</span>
Di mana checkValue1
fungsi terlihat seperti ini:
$scope.checkValue1 = function() {
return $scope.obj.value === 'somevalue';
}
Saya hanya bertanya-tanya jika ini adalah bagaimana ng-kelas
seharusnya bekerja. Saya juga membangun kustom direktif di mana saya ingin melakukan sesuatu yang mirip dengan ini. Namun, saya dapat't menemukan cara untuk menonton sebuah ekspresi (dan mungkin itu adalah mustahil dan alasan mengapa ia bekerja seperti ini).
Berikut ini adalah plnkr untuk menunjukkan apa yang saya maksud.
Upaya pertama anda hampir benar, harus bekerja tanpa tanda kutip.
Berikut ini adalah plnkr.
Yang ngClass direktif akan bekerja dengan ekspresi yang mengevaluasi truthy atau falsey, sedikit mirip dengan Javascript ekspresi tetapi dengan beberapa perbedaan, anda dapat membaca tentang di sini. Jika anda bersyarat adalah terlalu kompleks, maka anda dapat menggunakan sebuah fungsi yang mengembalikan truthy atau falsey, seperti yang anda lakukan dalam upaya ketiga.
Hanya untuk melengkapi: Anda juga dapat menggunakan operator logika untuk membentuk ekspresi logis seperti
Menggunakan ng-kelas dalam ng-repeat
Untuk setiap status pada tugas.status kelas yang berbeda digunakan untuk baris.
Angular JS menyediakan fungsi ini di ng-kelas Direktif. Di mana anda dapat menempatkan kondisi dan juga menetapkan bersyarat kelas. Anda dapat mencapai hal ini dalam dua cara yang berbeda.
Tipe 1
Dalam kode ini kelas akan berlaku sesuai dengan nilai status nilai
jika status nilai 0 kemudian oleskan kelas one
jika status nilai 1 kemudian oleskan kelas dua
jika status nilai 2 kemudian oleskan kelas tiga
Tipe 2
Di kelas yang akan menerapkan dengan nilai status
jika status nilai 1 atau true maka akan menambah kelas test_yes
jika status nilai 0 atau false maka akan menambah kelas test_no
Saya melihat contoh-contoh di atas, tetapi mereka semua mulai dengan kurung kurawal (json peta). Pilihan lain adalah untuk kembali hasil berdasarkan perhitungan. Hasilnya juga dapat daftar nama kelas css (tidak hanya peta). Contoh:
atau
Penjelasan: Jika status aktif, kelas
diaktifkan
akan digunakan. Jika tidak, kelascacat
yang akan digunakan.Daftar
[]
digunakan untuk menggunakan beberapa kelas (tidak hanya satu).Ada metode sederhana yang dapat anda gunakan dengan atribut class html, dan singkatan if/else. Tidak perlu untuk membuat itu begitu kompleks. Hanya menggunakan metode berikut.
Happy Coding, Nimantha Perera
Sudut sintaks untuk menggunakan : operator untuk melakukan setara jika pengubah
Tambahkan clearfix kelas bahkan untuk baris. Meskipun demikian, ekspresi bisa menjadi apa pun yang dapat kita miliki dalam normal jika kondisi dan harus mengevaluasi ke true atau false.
Saya akan menunjukkan kepada anda dua metode dengan mana anda dapat secara dinamis menerapkan ng-kelas
Langkah-1
Dengan menggunakan operator ternary
Output
Jika kondisi benar maka class1 akan diterapkan ke elemen yang lain class2 yang akan diterapkan.
Kelemahan
Ketika anda akan mencoba untuk mengubah nilai bersyarat pada jangka waktu kelas entah bagaimana tidak akan berubah. Jadi saya akan menyarankan anda untuk pergi untuk step2 jika anda memiliki persyaratan seperti kelas dinamis berubah.
Langkah-2
Output
jika kondisi anda sesuai dengan value1 kemudian class1 akan diterapkan ke elemen anda, jika cocok dengan value2 kemudian class2 akan diterapkan, dan sebagainya. Dan dinamis kelas perubahan akan bekerja dengan baik dengan itu.
Berharap ini akan membantu anda.
Menggunakan fungsi dengan ng-hotel ini adalah pilihan yang baik ketika seseorang memiliki untuk menjalankan logika yang kompleks untuk memutuskan sesuai kelas CSS.
http://jsfiddle.net/ms403Ly8/2/
HTML:
CSS:
JavaScript:
gunakan ini
misalnya jika kondisi ini [2 == 2], serikat adalah {benar: '...', palsu: '...'}
Untuk Sudut 2, gunakan ini
ng-class
adalah Direktif inti AngularJs. Di mana anda dapat menggunakan "String Sintaks", "Array Sintaks", "Mengevaluasi Ekspresi", " Operator Ternary" dan banyak pilihan yang dijelaskan di bawah ini:ngClass Menggunakan String Sintaks
Ini adalah cara paling sederhana untuk menggunakan ngClass. Anda hanya dapat menambahkan Sudut variabel untuk ng-kelas itu adalah kelas yang akan digunakan untuk elemen tersebut.
Demo Contoh ngClass Menggunakan String Sintaks
ngClass Menggunakan Array Sintaks
Hal ini mirip dengan string sintaks metode kecuali anda dapat menerapkan beberapa kelas.
ngClass Menggunakan Ekspresi Dievaluasi
Sebuah metode yang lebih canggih menggunakan ngClass (dan salah satu yang anda mungkin akan menggunakan sebagian besar) adalah untuk mengevaluasi ekspresi. Cara ini bekerja adalah bahwa jika sebuah variabel atau ekspresi yang mengevaluasi ke
benar
, anda dapat menerapkan kelas tertentu. Jika tidak, maka kelas won't akan diterapkan.Contoh ngClass Menggunakan Dievaluasi Ekspresi
ngClass Menggunakan Nilai
Hal ini mirip dengan ekspresi dievaluasi metode kecuali anda hanya dapat membandingkan beberapa nilai dengan satu-satunya variabel.
ngClass Menggunakan Operator Ternary
Operator ternary memungkinkan kita untuk menggunakan singkatan untuk menentukan dua kelas yang berbeda, jika salah satu ekspresi benar dan satu salah. Berikut ini adalah sintaks dasar untuk operator ternary:
Evaluasi Pertama, Terakhir atau Nomor Tertentu
Jika anda menggunakan
ngRepeat
direktif dan anda ingin menerapkan kelas untukpertama
,lalu
, atau nomor tertentu dalam daftar, anda dapat menggunakan sifat khusus daringRepeat
. Ini termasuk$pertama
,$lalu
,$bahkan
,$aneh
, dan beberapa orang lainnya. Berikut ini's contoh bagaimana untuk menggunakan ini.