Jawaban:
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:
((condition) && (answer if true) || (answer if false))
Contohnya adalah:
<ul class="nav">
<li>
<a href="#/page1" style="{{$location.path()=='/page2' && 'color:#fff;' || 'color:#000;'}}">Goals</a>
</li>
<li>
<a href="#/page2" style="{{$location.path()=='/page2' && 'color:#fff;' || 'color:#000;'}}">Groups</a>
</li>
</ul>
atau:
<li ng-disabled="currentPage == 0" ng-click="currentPage=0" class="{{(currentPage == 0) && 'disabled' || ''}}"><a> << </a></li>
Sekarang kita semua menemukan versi 1.1.5 hadir dengan $parse
fungsi ternary yang tepat jadi gunakan saja jawaban ini sebagai contoh filter:
angular.module('myApp.filters', [])
.filter('conditional', function() {
return function(condition, ifTrue, ifFalse) {
return condition ? ifTrue : ifFalse;
};
});
Dan kemudian gunakan sebagai
<i ng-class="checked | conditional:'icon-check':'icon-check-empty'"></i>
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.
ng-class="boolForTernary ? 'blue' : 'red'"
Meskipun Anda dapat menggunakan condition && if-true-part || if-false-part
-syntax dalam versi angular yang lebih lama, operator ternary condition ? true-part : false-part
tersedia di Angular 1.1.5 dan yang lebih baru .
<body ng-app="app">
<button type="button" ng-click="showme==true ? !showme :showme;message='Cancel Quiz'" class="btn btn-default">{{showme==true ? 'Cancel Quiz': 'Take a Quiz'}}</button>
<div ng-show="showme" class="panel panel-primary col-sm-4" style="margin-left:250px;">
<div class="panel-heading">Take Quiz</div>
<div class="form-group col-sm-8 form-inline" style="margin-top: 30px;margin-bottom: 30px;">
<button type="button" class="btn btn-default">Start Quiz</button>
</div>
</div>
</body>
Tombol beralih dan mengubah tajuk tombol dan menampilkan / menyembunyikan panel div. Lihat Plunkr