v-show和v-if目录
- v-show和v-if
- template
v-show和v-if
v-show与v-if的区别就是,v-show如果值为false的时候只是添加了一个样式display:none,而v-if直接标签都没有,相比来说show的话一般应用在需要频繁切换的场合,if一般在一次性场合使用(实际开发过程中,v-if用的比较多),这是因为,v-show只是修改了display,而v-if是不断的在dom里面增加以及删除节点。当然不管是哪个,都可以修改为true或者false来决定是显示还是隐藏。
<div id="testBox">
<div v-show="isShow">{{name}}</div>
<button @click="changeShow">显示/隐藏</button>
<div v-if="isShow">v-if</div>
<div v-else-if="!isShow">v-else-if</div>
</div>
<script type="text/javascript">
new Vue({
el:'#testBox',
data:{
name: '野原新之助',
isShow: true
},
methods: {
changeShow() {
this.isShow = ! this.isShow;
}
},
})
</script>
注意:
1.v-if以及v-else-if与判断if…else一样的逻辑。
2.同时有多个if,条件都为true也会一起显示。
3.如果条件互斥的话最好用v-if加v-else-if,因为都用v-if会重复判断。
4.还有v-else,也与判断逻辑一致(前面判断都不成立,这里直接v-else,就算加条件也不起作用)。
5.中间不能穿插其他的元素,不然后面的就不执行了,
如下
<button @click="changeShow">显示/隐藏</button>
<div v-if="isShow">v-if</div>
<div></div>
<div v-else-if="!isShow">v-else-if</div>
<div v-else>啥都没有</div>
也报错了,意思就是后面的else…找不到v-if了。
template
用template的好处就是不影响结构。但是只能跟v-if结合使用,不能跟v-show搭配使用。
<div id="testBox">
<div v-if="isShow">
<h1>11</h1>
<h2>22</h2>
<h3>33</h3>
</div>
<template v-if="isShow">
<h1>44</h1>
<h2>55</h2>
<h3>66</h3>
</template>
</div>
<script type="text/javascript">
new Vue({
el:'#testBox',
data:{
name: '野原新之助',
isShow: true
},
})
</script>
那么为什么template不能和v-show一起用呢?
因为template是虚拟dom,不会显示在页面上,而v-show是需要对元素进行操作,改变它的display的,没元素就不能操作了。但是v-if只要满足条件就可以显示。
更多推荐
Vue--v-show和v-if
发布评论