既然是條件式,就一定有選擇,在程式裡,最簡單也最常用的選擇是使用布林值: true 或 false 只能擇一。利用這種二擇一的特性,去執行我們希望程式做的事。
在 Vue 裡的條件渲染指令有以下兩種:
v-if 和 v-else 一起用
v-if
和v-else
一起用的時候,把條件的屬性放在v-if
的標籤屬性裡,如果屬性結果是true
就會顯示v-if
的內容,如果結果是false
就會顯示v-else
的內容,在選染頁面部分,我們會發現,如果是false
,就連 HTML 的部分也不會被渲染出。
當我們只有有寫v-else
如<p v-else>失敗</p>
等同是v-else="true"
,通常在v-else
是不需要給條件的。
需要做切換時,只要使用運算子!
將條件調整為@click="yes=!yes"
就可達到切換的效果。
1 | <p v-if="success">成功</p> |
v-show 用兩次
v-show
通常拿來作為一個切換器,像開關一樣,不是開就是關。如果需要平凡的切換,就使用v-show
。
1 | <p v-show="success">已完成</p> |
v-if 和 v-show 的不同之處
v-if
可以搭配v-else-if
和v-else
而有多選一的機制,但是v-show
通常只能二選一。
在渲染的部分,使用v-if
只會渲染出達到條件的 HTML,但是v-show
會把條件全渲染出來,然後用以style="display: none;"
的方式隱藏。
需要多選一的時候就用 v-if
剛剛說過 v-if
可以搭配v-else-if
和v-else
做出多選一的機制,也很彈性,使用方法也很簡潔,同樣只會炫染出true
的部分。
1 | <h4>v-if-else multiple</h4> |
JavaScript Vue 實例的部分:
1 | const vm = new Vue({ |
值得注意的是在 Vue 的官網上說明:不推薦同時使用v-if
和 v-for
當 v-if
與 v-for
一起使用時,v-for
會具有比 v-if 更高的優先級。詳細解釋請查閱 Vue 的風格指南 — Vue.js和列表渲染指南:
列表渲染 — Vue.js