首页 > 其他 > 详细

vue指令之v-if和v-show

时间:2021-09-13 17:18:44      阅读:33      评论:0      收藏:0      [点我收藏+]

vue指令的作用是通过带有v-的特殊属性,实现对dom的响应式加载。

v-if

v-if的作用是通过一个布尔表达式进行对dom的上树和下树的渲染。

 1     <div id="app">
 2        <p v-if="true">我是第一行dom元素</p> 
 3        <p v-if="false">我是第二行dom元素</p>
 4     </div>
 5     <script src="./js/vue.js"></script>
 6     <script>
 7         var vue= new Vue({
 8             el:"#app",
 9             data:{          
10             },
11             methods:{   
12             }
13         })
14     </script>

 

此时我们可以看到:

技术分享图片

 

页面中没有<p v-if="false">我是第二行dom元素</p>,通过v-if实现了标签下树。

第一种情况是通过data带有布尔值的进行渲染。

 

 1     <div id="app">
 2         <p v-if="boo">我是第一行dom元素</p>
 3         <p v-if="!boo">我是第二行dom元素</p>
 4     </div>
 5     <script src="js/vue.js"></script>
 6     <script>
 7         var vue = new Vue({
 8             el: ‘#app‘,
 9             data:{
10                 boo: true
11             },
12             methods:{}
13         })
14     </script>

 

 

 

此时我们可以看到页面中依旧没有<p v-if="false">我是第二行dom元素</p>

技术分享图片

 

 

 第二种情况是通过使用表达式进行逻辑判断

 1 <div id="app">
 2         <!-- 监听boo的值 -->
 3         <p>{{boo}}</p>
 4         <!-- 当boo的值等于5的时候再显示 -->
 5             <p v-if="boo == 5">我是第一行dom元素</p>
 6             <button @click="add">按我加1</button>
 7         </div>
 8         <script src="js/vue.js"></script>
 9         <script>
10             var vue = new Vue({
11                 el: ‘#app‘,
12                 data:{
13                     boo: 1
14                 },
15                 methods:{
16                     add(){
17                         this.boo++
18                     }
19                 }
20             })
21         </script>

此时可以看到:

技术分享图片

v-if的显示根本原理一个是通过对值的隐式转换,一个就是通过对表达式的判断得出的布尔值得来的。

 1     <div id="app">
 2         <h2>{{boo}}</h2>
 3         <p v-if=‘boo >= 0 && boo <= 5‘>我是5</p>
 4         <p v-if=‘boo >= 6 && boo <= 10‘>我是10</p>
 5         <p v-if=‘boo >= 11 && boo <= 15‘>我是15</p>
 6         <p v-if=‘boo >= 16 && boo <= 20‘>我是20</p>
 7         <p v-if="boo > 20">我是大于20</p>
 8         <button @click="add">按我加1</button>    
 9     </div>
10     <script src="js/vue.js"></script>
11     <script>
12         var vue = new Vue({
13             el: ‘#app‘,
14             data:{
15                 boo: 0
16             },
17             methods:{
18                 add(){
19                     this.boo++
20                 }
21             }
22         })
23     </script>

此时可以看到:

技术分享图片技术分享图片技术分享图片技术分享图片技术分享图片

 

 

上面的代码是通过v-if一层一层进行判断的,实际上是可以通过v-else-if和v-else进行分支判断

 

1 <p v-if=‘boo >= 0 && boo <= 5‘>我是5</p>
2 <p v-else-if=‘boo >= 6 && boo <= 10‘>我是10</p>
3 <p v-else-if=‘boo >= 11 && boo <= 15‘>我是15</p>
4 <p v-else-if=‘boo >= 16 && boo <= 20‘>我是20</p>
5 <p v-else="boo > 20">我是大于20</p>

注意:v-else的使用前提是必须先有v-if并且中间不允许有任何的元素间隔

 我们在中间插入一个div标签

1       <p v-if=‘boo >= 0 && boo <= 5‘>我是5</p>
2         <div></div>
3         <p v-else-if=‘boo >= 6 && boo <= 10‘>我是10</p>
4         <p v-else-if=‘boo >= 11 && boo <= 15‘>我是15</p>
5         <p v-else-if=‘boo >= 16 && boo <= 20‘>我是20</p>
6         <p v-else="boo > 20">我是大于20</p>

技术分享图片

 

 后面的代码便不再显示了

v-show

v-show和v-if的显示情况类似,但是原理不一样,v-show是通过控制元素的display属性,对元素的显示和隐藏进行逻辑判断,并没有实现元素的下树。

 1  <div id="app">
 2             <p>{{boo}}</p>
 3             <p v-show=‘boo >= 5‘>我是5</p>
 4             <button @click="add">按我加1</button>
 5         </div>
 6         <script src="js/vue.js"></script>
 7         <script>
 8             var vue = new Vue({
 9                 el: ‘#app‘,
10                 data:{
11                     boo: 0
12                 },
13                 methods:{
14                     add(){
15                         this.boo++
16                     }
17                 }
18             })
19         </script>

我们可以看到:

技术分享图片

 

 p标签的属性为display:none,所以不显示。

什么时候用v-if、什么时候使用v-show

v-show和v-if的使用场景区分是如果页面切换的特别频繁使用v-show,如果页面的涉及范围特别大并且不是特别频繁的切换使用v-if,因为主要区分是涉及到页面的加载性能。

 

vue指令之v-if和v-show

原文:https://www.cnblogs.com/keyeking/p/15258247.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!