六、Vue條件判斷
01-v-if,v-else-if,v-else的使用
1.1 v-if,v-else-if,v-else
1、v-if,v-else-if,v-else
- 這三個指令與JavaScript的條件語句if,else,else if類似
- Vue的條件指令可以根據表示式的值在DOM中渲染或銷燬元素或元件
2、v-if原理
- v-if後面的條件為false時,對應的元素以及其子元素不會渲染
- 也就是根本沒有不會有對應的標籤出現在DOM中
1.2 程式碼實戰
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>01-v-if,v-else-if,v-else的使用</title>
</head>
<body>
<div id="app">
<h2 v-if="score>=90">優秀</h2>
<h2 v-else-if="score>=80">良好</h2>
<h2 v-else-if="score>=60">及格</h2>
<h2 v-else>不及格</h2>
<hr>
<h2>{{result}}</h2>
</div>
<script type="text/javascript" src="../js/vue.js"></script>
<!--如果沒有安裝vue.js,就用下面的程式碼-->
<!--<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>-->
<script type="text/javascript">
const vm = new Vue({
el: '#app',
data: {
message: 'hello world!',
score: 97
},
computed: {
result(){
let result = '';
if(this.score >= 90){
result = '優秀';
}else if(this.score >= 80){
result = '良好';
}else if(this.score >= 60){
result = '及格';
}else{
result = '不及格';
}
return result;
}
}
})
</script>
</body>
</html>
1.3 執行結果
02-切換登入方式的案例
2.1 案例需求
使用者在登入時,可以切換使用者賬號登入還是郵箱賬號登入
2.2 實戰程式碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>02-切換登入方式的案例</title>
</head>
<body>
<div id="app">
<span v-if="isUser">
<!--for="username" 這個屬性可以讓滑鼠點選文字的時候游標在id="username"的輸入框裡-->
<label for="username">使用者賬號</label>
<input type="text" id="username" placeholder="使用者賬號">
</span>
<span v-else>
<label for="email">使用者郵箱</label>
<input type="text" id="email" placeholder="使用者郵箱">
</span>
<button @click="isUserClick()">切換登入方式</button>
</div>
<script type="text/javascript" src="../js/vue.js"></script>
<!--如果沒有安裝vue.js,就用下面的程式碼-->
<!--<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>-->
<script type="text/javascript">
const vm = new Vue({
el: '#app',
data: {
message: 'hello world!',
isUser:true
},
methods: {
isUserClick(){
this.isUser = !this.isUser;
}
}
})
</script>
</body>
</html>
2.3 案例小問題
1、小問題:
- 如果我們在有輸入內容的情況下,切換了型別,我們會發現文字一仍然顯示之前的輸入的內容
- 但是按道理講,我們應該切換到另一個input的元素中
- 在另一個input元素中,我們並沒有輸入內容
- 為什麼會出現這個問題呢?
2、問題解答:
- 這是因為Vue在進行DOM渲染時,出於效能考慮,會盡可能的複用已經存在的元素,而不是重新建立新的元素
- 在案例中,Vue內部會發現原來的input元素不再使用,直接作為else中input來使用
3、解決方案:
- 如果我們不考慮Vue出現類似重複利用的問題,可以給對應的input新增key
- 並且保證key不相同
<div id="app">
<span v-if="isUser">
<label for="username">使用者賬號</label>
<input type="text" id="username" placeholder="使用者賬號" key="username">
</span>
<span v-else>
<label for="email">使用者郵箱</label>
<input type="text" id="email" placeholder="使用者郵箱" key="email">
</span>
<button @click="isUserClick()">切換登入方式</button>
</div>
03-v-show的使用
3.1 v-show
1、v-show的用法和v-if非常相似,也用於決定一個元素是否渲染
2、v-if和v-show都可以決定一個元素是否渲染,那麼開發中我們如何選擇呢?
- v-if當條件為false時,壓根不會有對應的元素在DOM中
- v-show當條件為false,僅僅是將元素的display屬性設定為none而已
3、開發種如何選擇呢?
- 當需要在顯示與隱藏之間切片很頻繁時,使用v-show
- 當只有一次切換時,通過使用v-if
3.2 程式碼實戰
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>03-v-show的使用</title>
</head>
<body>
<div id="app">
<!-- v-if :當條件為false時,包含v-if指令的元素。根本就不會存在dom中-->
<h2 v-if="isShow">{{message}}</h2>
<!-- v-show: 當條件為false時,v-show只是給我們的元素新增一個行內樣式:display:none-->
<h2 v-show="isShow">{{message}}</h2>
</div>
<script type="text/javascript" src="../js/vue.js"></script>
<!--如果沒有安裝vue.js,就用下面的程式碼-->
<!--<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>-->
<script type="text/javascript">
const vm = new Vue({
el: '#app',
data: {
message: 'hello world!',
isShow:true,
}
})
</script>
</body>
</html>
3.3 執行結果
相關文章
- Grovvy-條件判斷
- lisp 裡的條件判斷Lisp
- Shell 條件判斷總結
- thinkphp-條件判斷-範圍判斷-range標籤PHP
- Laravel 5 判斷條件是否存在Laravel
- mysql 插入時帶判斷條件MySql
- python3.0 -條件判斷Python
- python條件判斷與迴圈Python
- MySQL函式-條件判斷函式MySql函式
- thinkphp-條件判斷-if標籤2PHP
- 條件註釋判斷瀏覽器瀏覽器
- shell程式設計(五)條件判斷程式設計
- 易優CMS模板標籤if條件判斷多層次判斷
- 條件註釋判斷瀏覽器版本瀏覽器
- Python基礎:條件判斷 & 迴圈Python
- Go的條件判斷語句的使用Go
- 小白學python系列-(6) 條件判斷Python
- 第六講、Vue3.x中使用JavaScript表示式 、條件判斷、 計算屬性和watch偵聽VueJavaScript
- PbootCMS判斷有無子選單各種條件判斷和標籤boot
- PbootCMS奇偶數判斷(隔行變色)各種條件判斷和標籤boot
- PbootCMS整理分頁判斷進階各種條件判斷和標籤boot
- 程式碼優化-多型代替IF條件判斷優化多型
- UML圖中時序圖的新增判斷條件時序圖
- PHP基礎教程-19 If條件判斷語句PHP
- 資料庫啟動時的判斷條件資料庫
- 判斷符合條件記錄是否存在SQL若干SQL
- MySQL條件判斷IF,CASE,IFNULL語句詳解MySqlNull
- lua版promise實現3 - 條件判斷例子Promise
- PbootCMS整理判斷是否連結賦值各種條件判斷和標籤boot賦值
- PbootCMS導航欄 logo 居中判斷各種條件判斷和標籤bootGo
- PbootCMS判斷第一個迴圈項,並新增 class條件判斷和標籤boot
- Python中if條件判斷語句怎麼用?Python
- JavaScript(ES6)邏輯判斷條件優化JavaScript優化
- 蝦扯蛋之條件判斷的極致優化優化
- MyBatis 基本資料型別條件判斷問題MyBatis資料型別
- 輸出判斷條件是或的解決方法
- shell指令碼中的運算子和條件判斷指令碼
- IDEA如何給debug斷點加上篩選條件判斷Idea斷點