0%

[Day17] 條件式 (v-if) 進階

!否定用法

我們在 v-if 條件直接使用否定用法,將 true 的條件式改成 false,當條件等於 true 就會顯示出成功的 div 區塊,反之則會顯示失敗的 div 區塊。我們也可以寫一個 checkbox 綁定 isSucceed 來更改 truefalse

1
2
3
4
5
6
7
<body>
<div class="app">
<div v-if="isSucceed">成功</div>
<div v-if="!isSucceed">失敗</div>
<input type="checkbox" v-model="isSucceed">更換
</div>
</body>
1
2
3
4
5
6
7
8
9
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var app = new Vue({
el:'.app',
data:{
isSucceed:false,
},
});
</script>

v-else

我們也可以使用 v-else, 當 v-if 的條件不成立時,就會自動執行 v-else 的內容,而不用設定條件。

1
2
3
4
5
6
7
<body>
<div class="app">
<div v-if="isSucceed">成功</div>
<div v-else>失敗</div>
<input type="checkbox" v-model="isSucceed">更換
</div>
</body>
1
2
3
4
5
6
7
8
9
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var app = new Vue({
el:'.app',
data:{
isSucceed:false,
},
});
</script>

v-if,v-if-else,v-else

如果我們遇到一個三選一的條件,或是需要製作分頁,就可以使用 v-if,v-if-else,v-else 來製作分頁。我們先宣告資料變數 page 來存放切換的分頁代表。並且設定三個按鈕 abc ,分別將它們綁定點擊事件,點擊後會改變 page 資料的值為指定分頁代表。最後我們設定三個 div 區塊 abc,當 page == a 代表條件成立,會出現 a 區塊,點按鈕 b ,條件式 b 會成立,會出現 b 區塊,點按鈕 c,條件式 c 會成立,會出現 c 區塊。

1
2
3
4
5
6
7
8
9
10
<body>
<div class="app">
<div v-if="page=='a'">a</div>
<div v-else-if="page=='b'">b</div>
<div v-else="page=='c'">c</div>
<input type="button" value="a" @click="page='a'">
<input type="button" value="b" @click="page='b'">
<input type="button" value="c" @click="page='c'">
</div>
</body>
1
2
3
4
5
6
7
8
9
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var app = new Vue({
el:'.app',
data:{
page:'a'
},
});
</script>

v-show

其實 v-showv-if 的功能一樣,差別在於 v-show 是將條件式不成立的 div 區塊使用 dispaly:none 來隱藏,而 v-if 則是直接不會出現條件式不成立的區塊。

1
2
3
4
5
6
7
8
<body>
<div class="app">
<div v-show="isSucceed">成功</div>
<div v-show="!isSucceed">失敗</div>
<div v-if="isSucceed">成功</div>
<div v-if="!isSucceed">失敗</div>
</div>
</body>
1
2
3
4
5
6
7
8
9
10
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var app = new Vue({
el:'.app',
data:{
isSucceed:false,
page:'a'
},
});
</script>

https://i.imgur.com/n98b0GE.png