Saya mencoba untuk beralih kelas menggunakan elemen ng-class
<button class="btn">
<i ng-class="{(isAutoScroll()) ? 'icon-autoscroll' : 'icon-autoscroll-disabled'}"></i>
</button>
isAutoScroll ():
$scope.isAutoScroll = function()
{
$scope.autoScroll = ($scope.autoScroll) ? false : true;
return $scope.autoScroll;
}
Pada dasarnya, jika $scope.autoScroll
itu benar, saya ingin menjadi kelas ng icon-autoscroll
dan jika itu salah, saya menginginkannyaicon-autoscroll-disabled
Apa yang saya miliki sekarang tidak berfungsi dan menghasilkan kesalahan ini di konsol
Error: Lexer Error: Unexpected next character at columns 18-18 [?] in expression [{(isAutoScroll()) ? 'icon-autoscroll' : 'icon-autoscroll-disabled'}].
Bagaimana saya melakukan ini dengan benar?
EDIT
solusi 1: (ketinggalan jaman)
<button class="btn" ng-click="autoScroll = !autoScroll">
<i ng-class="{'icon-autoscroll': autoScroll, 'icon-autoscroll-disabled': !autoScroll}"></i>
</button>
EDIT 2
solusi 2:
Saya ingin memperbarui solusi karena Solution 3
, yang disediakan oleh Stewie, harus menjadi yang digunakan. Ini adalah yang paling standar ketika datang ke operator ternary (dan bagi saya paling mudah dibaca). Solusinya adalah
<button class="btn" ng-click="autoScroll = !autoScroll">
<i ng-class="autoScroll ? 'icon-autoscroll' : 'icon-autoscroll-disabled'"></i>
</button>
diterjemahkan menjadi:
if (autoScroll == true) ?
// gunakan kelas 'icon-autoscroll' :
// gunakan lagi'icon-autoscroll-disabled'
sumber
angular expressions
per dokumen => Tidak Ada Pernyataan Aliran Kontrol: Anda tidak dapat melakukan hal-hal berikut dalam ekspresi sudut: conditional, loop, atau throw. Gunakan fungsi atau arahan lainautoScroll
sini hanya akan berpengaruh di setiap tombol? (Saya menguji ini dengan beberapa tombol, dan itu bekerja dengan baik juga) Maksud saya, ketika saya mengklik setiap tombol, efeknya hanya tombol itu, bukan semua tombol.Jawaban:
Cara menggunakan conditional di ng-class:
Solusi 1:
Solusi 2:
Solusi 3 (angular v.1.1.4 + memperkenalkan dukungan untuk operator ternary):
Plunker
sumber
Sebagai solusi alternatif, berdasarkan operator logika javascript '&&' yang mengembalikan evaluasi terakhir, Anda juga dapat melakukannya seperti ini:
Ini hanya sintaks yang sedikit lebih pendek, tetapi bagi saya lebih mudah dibaca.
sumber
Tambahkan lebih dari satu kelas berdasarkan kondisi:
Terapkan: class1 + class2 + class3 ketika isNew = false ,
Terapkan: class1 + class4 ketika isNew = true
sumber
Analog dengan
toggleClass
metode jQuery , ini adalah cara untuk mengaktifkanactive
/ menonaktifkan kelas ketika elemen diklik.sumber
autoscroll akan didefinisikan dan dimodifikasi dalam pengontrol.
<span ng-class= "autoscroll?'class_if_true':'class_if_false'"></span>
Tambahkan beberapa kelas berdasarkan kondisi dengan:
<span ng-class= "autoscroll?'first second third':'classes_if_false'"></span>
sumber
Saya membuat ini bekerja dengan cara ini:
// di controller Anda
sumber