4.1 v-if指令
看到v-if你肯定会想到JavaScript中的if else条件判断语句,进而你会想是不是还有v-else指令。没错,Vue不仅给我们提供了v-else指令,还提供了v-else-if指令。
既然这样,我们就很好理解v-if指令了,就是根据表达式的值是真(true)还是假(false)来重建或者销毁一个我们绑定的DOM元素。
4.1.1 使用v-if指令
本节介绍使用v-if指令进行条件判断。下面的示例中,v-if指令将根据表达式xianshi的值(true或false)来决定是否插入p元素。具体步骤如下:
1)在Vue.js的data区域定义布尔型变量xianshi(值为true)、布尔型变量buxianshi(值为false)、布尔型变量ok(值为true)。
2)v-if和变量xianshi的使用:
<p v-if="xianshi">这里的内容会显示出来</p>
3)v-if和变量buxianshi的使用:
<p v-if="buxianshi">这里的内容会不会显示出来,在浏览器中看不到</p>
4)v-if和变量ok的使用:
<template v-if="ok"> <h1>Vue入门到精通</h1> <p>黄菊华老师主讲!</p> </template>
完整示例代码如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>条件判断语句 v-if 指令</title> <!--加载本地vue.js的框架--> <script src="vue2.2.2.min.js"></script> </head> <body> <!--定义div代码块的id的值,这里定义的值为app,后面Vue会使用该值--> <div id="app"> <!--属性xianshi的值为true,则下面段落内容会显示在浏览器--> <p v-if="xianshi">这里的内容会显示出来</p> <!--属性buxianshi的值为false,则下面段落内容不会显示在浏览器--> <p v-if="buxianshi">这里的内容不会显示出来,在浏览器中看不到</p> <!--属性ok的值为true,则下面模板内容会显示在浏览器中--> <template v-if="ok"> <h1>Vue入门到精通</h1> <p>黄菊华老师主讲!</p> </template> </div> <script> //下面是Vue.js的代码块-开始 new Vue({ el: '#app',//app为前面div代码块的id的值,通过“#”绑定 //data区域定义属性的值 data: { xianshi: true,//定义布尔型的值 buxianshi:false,//定义布尔型的值 ok: true //后面没有数据,则这里定义完毕后面不需要跟上逗号"," } })//Vue.js的代码块-结束 </script> </body> </html>
效果如图4-1所示。
图4-1 v-if指令
4.1.2 使用v-else指令
可以用v-else指令给v-if添加一个else块。
下面我们做一个示例:随机生成一个数字,判断是否大于0.5,然后输出对应信息。具体步骤如下:
1)在data代码块中定义一个变量shuzhi=1。
2)在html视图部分,结合随机函数Math.random()与数字0.5进行大小对比。
完整示例代码如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>条件判断语句v-else 指令</title> <!--加载本地vue.js的框架--> <script src="vue2.2.2.min.js"></script> </head> <body> <!--定义div代码块的id的值,这里定义的值为app,后面Vue会使用该值--> <div id="app"> <!--if指令后面为true执行的代码块-开始--> <div v-if="Math.random() > 0.5"> 随机数 大于 0.5 </div> <!--if指令后面为true执行的代码块-结束--> <!--if指令后面为false执行的代码块-开始--> <div v-else> 随机数 小于 0.5 </div> <!--if指令后面为false执行的代码块-结束--> <hr> <div v-if="shuzhi > 3">数字 大于 3</div> <div v-else>数字 小于 3</div> </div> <script> //下面是Vue.js的代码块-开始 new Vue({ el: '#app',//app为前面div代码块的id的值,通过“#”绑定 data:{ shuzhi:1 //定义一个数字属性 //后面没有数据,则这里定义完毕后面不需要跟上逗号“,” } })//Vue.js的代码块-结束 </script> </body> </html>
效果如图4-2所示。
图4-2 v-else指令
4.1.3 使用v-else-if指令
v-else-if是2.1.0版新增的指令,顾名思义,用作v-if的else-if块。可以链式地多次使用。
下面我们做一个示例:在data代码块中定义一个字符变量type(值为G),在html视图中通过v-if、v-else-if、v-else来判断和显示对应的内容。
完整示例代码如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>条件判断语句v-else-if 指令</title> <!--加载本地vue.js的框架--> <script src="vue2.2.2.min.js"></script> </head> <body> <!--定义div代码块的id的值,这里定义的值为app,后面Vue会使用该值--> <div id="app"> <!--下面为if指令后面为true时执行的代码块-开始--> <div v-if="type==='A'">A</div> <!--下面为else-if指令为true时执行的代码块--> <div v-else-if="type==='B'">B</div> <!--下面为else-if指令为true时执行的代码块--> <div v-else-if="type==='C'">C</div> <!--下面为(else指令)上面条件都不满足执行的代码块--> <div v-else>不是字母ABC</div> </div> <script> //下面是Vue.js的代码块-开始 new Vue({ el: '#app',//app为前面div代码块的id的值,通过“#”绑定 data:{ type:'G' //定义一个字符 //后面没有数据,则这里定义完毕,后面不需要跟上逗号“,” } })//Vue.js的代码块-结束 </script> </body> </html>
提示 v-else、v-else-if必须跟在v-if或者v-else-if之后。
效果如图4-3所示。
图4-3 v-else-if指令