Saya bertanya-tanya apakah ada cara di sudut untuk menampilkan konten selain menggunakan ng-show dll. Misalnya di backbone.js saya bisa melakukan sesuatu dengan konten inline dalam template seperti:
<% if (myVar === "two") { %> show this<% } %>
tetapi dalam sudut, saya tampaknya terbatas untuk menunjukkan dan menyembunyikan hal-hal yang dibungkus dengan tag html
<p ng-hide="true">I'm hidden</p>
<p ng-show="true">I'm shown</p>
Apa cara yang disarankan dalam sudut untuk menunjukkan dan menyembunyikan konten sebaris secara kondisional hanya menggunakan {{}} daripada membungkus konten dalam tag html?
angularjs
if-statement
ternary-operator
pengguna1469779
sumber
sumber
Jawaban:
Sunting : Jawaban 2Toad di bawah ini adalah yang Anda cari! Suara positif hal itu
Jika Anda menggunakan Angular <= 1.1.4 maka jawaban ini akan membantu:
Satu jawaban lagi untuk ini. Saya memposting jawaban terpisah, karena ini lebih merupakan upaya "tepat" pada solusi daripada daftar solusi yang mungkin:
Berikut filter yang akan melakukan "segera jika" (alias iif):
dan bisa digunakan seperti ini:
sumber
1.1.5 ditambahkan dukungan sudut untuk operator ternary:
sumber
myVar
hanya jika itu salah? (yaitu, bagaimana saya bisa membuat variabel sarang dalam ekspresi?) Saya mencoba{{myVar === "two" ? "it's true" : {{myVar}}}}
tetapi tidak berhasil.myVar
properti tidak perlu dibungkus dengan kurung kurawal tambahan, itu sudah ada di dalam ekspresi. Coba{{myVar === "two" ? "it's true" : myVar}}
Ribuan cara menguliti kucing ini. Saya sadar Anda bertanya tentang antara {{}} secara khusus, tetapi untuk orang lain yang datang ke sini, saya pikir ada baiknya menampilkan beberapa opsi lain.
berfungsi pada $ scope Anda (IMO, ini adalah taruhan terbaik Anda di sebagian besar skenario):
ng-show dan ng-hide tentu saja:
ngSwitch
Filter kustom seperti yang disarankan Bertrand. (ini adalah pilihan terbaik Anda jika Anda harus melakukan hal yang sama berulang kali)
Atau arahan khusus:
Secara pribadi, dalam kebanyakan kasus saya akan pergi dengan fungsi pada lingkup saya, itu membuat markup cukup bersih, dan itu cepat dan mudah diimplementasikan. Kecuali, jika demikian, Anda akan melakukan hal yang persis sama berulang kali, dalam hal ini saya akan pergi dengan saran Bertrand dan membuat filter atau mungkin arahan, tergantung pada situasinya.
Seperti biasa, hal terpenting adalah solusi Anda mudah dipelihara , dan mudah-mudahan dapat diuji. Dan itu akan bergantung sepenuhnya pada situasi spesifik Anda.
sumber
Saya menggunakan yang berikut ini untuk menetapkan attr kelas secara kondisional ketika ng-class tidak dapat digunakan (misalnya saat menata SVG):
Pendekatan yang sama harus bekerja untuk tipe atribut lainnya.
(Saya pikir Anda harus menggunakan Angular terbaru yang tidak stabil untuk menggunakan ng-attr-, saya saat ini di 1.1.4)
Saya telah menerbitkan artikel tentang bekerja dengan AngularJS + SVG yang membahas tentang ini dan masalah terkait. http://www.codeproject.com/Articles/709340/Implementing-a-Flowchart-with-SVG-and-AngularJS
sumber
Untuk memeriksa konten variabel dan memiliki teks default, Anda dapat menggunakan:
sumber
Jika saya mengerti Anda dengan baik, saya pikir Anda memiliki dua cara untuk melakukannya.
Pertama, Anda bisa mencoba ngSwitch dan cara kedua yang mungkin adalah membuat filter Anda sendiri . Mungkin ngSwitch adalah pendekatan yang tepat tetapi jika Anda ingin menyembunyikan atau menampilkan konten sebaris hanya menggunakan filter {{}} adalah cara yang harus dilakukan.
Berikut ini biola dengan filter sederhana sebagai contoh.
sumber
Pustaka UI sudut memiliki built-in directive ui-if untuk kondisi dalam templat / Tampilan hingga angular ui 1.1.4
Contoh: Dukungan di UI Sudut hingga 1.1.1
ng-jika tersedia di semua versi sudut setelah 1.1.4
jika Anda memiliki data dalam variabel array maka hanya div yang akan muncul
sumber
ui-if
telah dihapus setidaknya dari versi terbaru angular-ui tetapi sejak angular 1.1.5 Anda miliking-if
(dari komentar ini )Jadi dengan Angular 1.5.1 (memiliki ketergantungan aplikasi yang ada pada beberapa dependensi tumpukan MEAN lain adalah mengapa saya saat ini tidak menggunakan 1.6.4)
Ini bekerja untuk saya seperti kata OP
{{myVar === "two" ? "it's true" : "it's false"}}
sumber
jika Anda ingin menampilkan "Tidak Ada" ketika nilainya "0", Anda dapat menggunakan sebagai:
atau benar salah di sudut js
sumber
Bekerja bahkan dalam Situasi yang eksotis:
sumber
Saya akan melemparkan milik saya dalam campuran:
https://gist.github.com/btm1/6802312
ini mengevaluasi pernyataan if sekali dan menambahkan no watch listener TETAPI Anda dapat menambahkan atribut tambahan ke elemen yang memiliki set-if disebut wait-for = "somedata.prop" dan itu akan menunggu data atau properti diatur sebelum mengevaluasi pernyataan if sekali. atribut tambahan itu bisa sangat berguna jika Anda sedang menunggu data dari permintaan XHR.
sumber