Bagaimana Anda melakukan ternary dengan AngularJS (dalam templat)?
Akan menyenangkan untuk menggunakan beberapa atribut html (kelas dan gaya) daripada membuat dan memanggil fungsi controller.
sumber
Bagaimana Anda melakukan ternary dengan AngularJS (dalam templat)?
Akan menyenangkan untuk menggunakan beberapa atribut html (kelas dan gaya) daripada membuat dan memanggil fungsi controller.
Pembaruan : Angular 1.1.5 menambahkan operator ternary , jadi sekarang kita bisa menulis
<li ng-class="$first ? 'firstRow' : 'nonFirstRow'">
Jika Anda menggunakan versi Angular sebelumnya, dua pilihan Anda adalah:
(condition && result_if_true || !condition && result_if_false)
{true: 'result_if_true', false: 'result_if_false'}[condition]
item 2. di atas membuat objek dengan dua properti. Sintaks array digunakan untuk memilih properti dengan nama true atau properti dengan nama false, dan mengembalikan nilai yang terkait.
Misalnya,
<li class="{{{true: 'myClass1 myClass2', false: ''}[$first]}}">...</li>
or
<li ng-class="{true: 'myClass1 myClass2', false: ''}[$first]">...</li>
$ first disetel ke true di dalam ng-repeat untuk elemen pertama, jadi di atas akan menerapkan kelas 'myClass1' dan 'myClass2' hanya pertama kali melalui loop.
Dengan ng-class ada cara yang lebih mudah: ng-class mengambil ekspresi yang harus dievaluasi sebagai berikut:
Contoh 1) diberikan di atas. Berikut adalah contoh dari 3, yang menurut saya berbunyi jauh lebih baik:
<li ng-class="{myClass: $first, anotherClass: $index == 2}">...</li>
Pertama kali melalui loop berulang, kelas myClass ditambahkan. Ketiga kalinya sampai ($ indeks dimulai pada 0), kelas anotherClass ditambahkan.
ng-style mengambil ekspresi yang harus dievaluasi ke peta / objek nama gaya CSS ke nilai CSS. Misalnya,
<li ng-style="{true: {color: 'red'}, false: {}}[$first]">...</li>
ng-style
memperbarui, tetapi tampaknya hanya dievaluasi ketika elemen pertama kali diberikan. (Sudut noob di sini)Pembaruan: Angular 1.1.5 menambahkan operator ternary, jawaban ini hanya benar untuk versi sebelumnya 1.1.5. Untuk 1.1.5 dan yang lebih baru, lihat jawaban yang saat ini diterima.
Sebelum Angular 1.1.5:
Bentuk terner dalam angular adalah:
Contohnya adalah:
atau:
sumber
Untuk teks dalam templat sudut (
userType
adalah properti dari $ scope, seperti $ scope.userType):sumber
Sekarang kita semua menemukan versi 1.1.5 hadir dengan
$parse
fungsi ternary yang tepat jadi gunakan saja jawaban ini sebagai contoh filter:Dan kemudian gunakan sebagai
sumber
Itu dia: operator ternary ditambahkan ke angular parser di 1.1.5 ! lihat changelog
Berikut ini biola yang menunjukkan operator ternary baru yang digunakan dalam arahan kelas-ng.
sumber
Meskipun Anda dapat menggunakan
condition && if-true-part || if-false-part
-syntax dalam versi angular yang lebih lama, operator ternarycondition ? true-part : false-part
tersedia di Angular 1.1.5 dan yang lebih baru .sumber
Tombol beralih dan mengubah tajuk tombol dan menampilkan / menyembunyikan panel div. Lihat Plunkr
sumber