Tampaknya agak aneh bahwa saya tidak tahu bagaimana melakukan ini dalam kumis. Apakah ini didukung?
Ini adalah upaya menyedihkan saya dalam mencoba:
{{#author}}
{{#avatar}}
<img src="{{avatar}}"/>
{{/avatar}}
{{#!avatar}}
<img src="/images/default_avatar.png" height="75" width="75" />
{{/avatar}}
{{/author}}
Ini jelas tidak benar, tetapi dokumentasi tidak menyebutkan hal seperti ini. Kata "lain" bahkan tidak disebutkan :(
Juga, mengapa kumis dirancang seperti ini? Apakah hal semacam ini dianggap buruk? Apakah ini mencoba memaksa saya untuk menetapkan nilai default dalam model itu sendiri? Bagaimana dengan kasus-kasus di mana itu tidak mungkin?
javascript
templates
mustache
egervari
sumber
sumber
{{#each items}}{{#unless @first}}Output comma before 2nd, 3rd, 4th...{{/unless}}{{/each}}
lebih mudah dibaca, lebih bersih, dan masih presentasi. "Logika-kurang" adalah pedoman, tidak harus menjadi jaket ketat.mustache
Jawaban:
Ini adalah bagaimana Anda melakukannya jika / selain di Kumis (didukung sempurna):
Atau dalam kasus Anda:
Cari bagian terbalik dalam dokumen: https://github.com/janl/mustache.js
sumber
if (condition){ //do something}
diikuti oleh aif (!condition){//do something else}
. Juga, jumlah logika yang dapat dilakukan seseorang dalam logika sangat berkurang dibandingkan dengan bahasa berbasis logika. Hanya ada atau tidak adanya pemeriksaan, yaitu Anda tidak dapat memeriksa apakah nilai tag sama dengan 5 dan kemudian jatuh ke dalam kode tag itu.Ini adalah sesuatu yang Anda pecahkan dalam "controller", yang merupakan titik dari templating tanpa logika.
Ini sebenarnya BANYAK lebih baik daripada mempertahankan url gambar atau media lain yang mungkin atau mungkin tidak berubah dalam template Anda, tetapi perlu membiasakan diri. Intinya adalah untuk menghapus visi terowongan template, avatar img url terikat untuk digunakan dalam template lain, apakah Anda akan mempertahankan url pada template X atau objek pengaturan DEFAULTS tunggal? ;)
Pilihan lain adalah melakukan hal berikut:
Dan di templat:
Tapi itu bertentangan dengan seluruh arti dari templating tanpa logika. Jika itu yang ingin Anda lakukan, Anda ingin templating logis dan Anda tidak boleh menggunakan Kumis, meskipun memberi diri Anda kesempatan yang adil untuk mempelajari konsep ini;)
sumber
Pernyataan Anda yang lain akan terlihat seperti ini (perhatikan
^
):Dalam kumis ini disebut 'Bagian terbalik'.
sumber
Anda dapat menentukan pembantu dalam tampilan. Namun, logika kondisional agak terbatas. Moxy-Stencil ( https://github.com/dcmox/moxyscript-stencil ) tampaknya menangani ini dengan bantuan "parameterized", misalnya:
{{isActive param}}
dan dalam tampilan:
view.isActive = fungsi (path: string) {path kembali === this.path? "class = 'active'": ''}
sumber
Catatan, Anda dapat menggunakan
{{.}}
untuk merender item konteks saat ini.sumber