天天看點

vue指令之v-if與v-show

v-if:

main.js:

var app = new Vue({
    el: "#app",
    data: {
        role: 'admin'
    }
});
           

index.html

<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <div v-if="role == 'admin'">管理者,你好!</div>
    <div v-else="role == 'hr'">待檢視履歷。。。</div>
    <div v-else>你沒有權限檢視資訊!</div>
</div>

<script src="../lib/vue.js"></script>
<script src="./js/main.js"></script>
</body>
</html>
           

v-if中包裹多個标簽:

<div id="app">
    <template v-if="value>10">
        <p>hello</p>
        <p>world</p>
    </template>
</div>
           
var app = new Vue({
    el: '#app',
    data: {
        value: 20,
    }
});
           

v-show:

v-show 的用法與 v-if 基本一緻,隻不過 v-show 是改變元素的css 屬性display。當v-show表達式的值為false時, 元素會隐藏,檢視DOM 結構會看到元素上加載了内聯樣式 display:none;。

注:v-show不能在template上使用。

v-if與v-show的選擇:

v-if和v-show具有類似的功能,不過v-if才是真正的條件渲染,它會根據表達式适當地銷毀或重建元素及綁定的事件或子元件。若表達式初始值為 false,則一開始元素/元件并不會渲染,隻有當條件第一次變為真時才開始編譯。

而v-show隻是簡單的css屬性切換,無論條件真與否,都會被編譯。相比之下,v-if更适合條件不經常改變的場景,因為它切換開銷相對較大,而 v-show 适用于頻繁切換條件。