上QQ阅读APP看书,第一时间看更新
4.2 v-show指令
v-show指令通过改变元素的css属性(display)来决定元素是显示还是隐藏。
4.2.1 v-show指令的用法
v-show指令主要用来决定它所在区块显示与否。
通用语法如下:
v-show = "布尔值true或false"
其中,true表示所在区块显示,false表示不显示。
在下面的示例中,我们定义不同的变量值,然后根据变量的值来确认是显示还是隐藏。具体步骤如下:
1)在Vue.js的data区域定义布尔型变量xianshi1(值为true)、布尔型变量xianshi2(值为false)。
2)在html视图中,使用v-show结合变量xianshi1(设置变量的值为true)来使用:
<div v-show="xianshi1" id="id01">show=true</div>
3)在html视图中,使用v-show结合变量xianshi2(设置变量的值为false)来使用:
<div v-show="xianshi2" id="id02">show=false</div>
完整示例代码如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue.js中v-show指令</title> <!--加载本地vue.js的框架--> <script src="vue2.2.2.min.js"></script> </head> <body> <!--定义div代码块的id的值,这里定义的值为app,后面Vue会使用该值--> <div id="app"> <!--属性xianshi1的值为true,则下面段落的内容会显示在浏览器中--> <div v-show="xianshi1" id="id01">show=true</div> <!--属性xianshi2的值为false,则下面段落的内容不会显示在浏览器中--> <div v-show="xianshi2" id="id02">show=false</div> </div> <script> //下面是Vue.js的代码块-开始 new Vue({ el: '#app',//app为前面div代码块的id的值,通过“#”绑定 //data区域定义属性的值 data: { xianshi1:true, //定义布尔型值 xianshi2:false //定义布尔型值 //后面没有数据,则这里定义完毕,后面不需要跟上逗号“,” } })//Vue.js的代码块-结束 </script> </body> </html>
效果如图4-4所示。
图4-4 v-show指令
4.2.2 v-show指令和v-if指令的区别
v-show仅是隐藏/显示,值为false时,该元素依旧存在于DOM树中。若其原有样式设置了display:none,则会导致其无法正常显示。
v-if是动态添加,当值为false时,完全移除该元素,即DOM树中不存在该元素。
下面我们做一个示例:使用v-show的代码块,不管v-show后面的值是true还是false,在DOM树中都能读取对应的信息;使用v-if的代码块,如果v-if后面的值是true,则可以读取对应的信息;如果v-if后面的值是false,因为不存在了,则读取不到。
完整示例代码如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue.js中v-show指令和v-if指令的区别</title> <!--加载本地vue.js的框架--> <script src="vue2.2.2.min.js"></script> </head> <body> <!--定义div代码块的id的值,这里定义的值为app,后面Vue会使用该值--> <div id="app"> <!--属性xianshi1的值为true,则下面段落的内容会显示在浏览器中--> <div v-show="xianshi1" id="id01">show=true</div> <!--属性xianshi2的值为false,则下面段落的内容不会显示在浏览器中--> <div v-show="xianshi2" id="id02">show=false</div> <button onClick="my01()">第1个按钮:读取show的Dom内容</button> <!--属性xianshi1的值为true,则下面段落的内容会显示在浏览器中--> <div v-if="xianshi1" id="id03">if=true</div> <!--属性xianshi2的值为false,则下面段落的内容不会显示在浏览器--> <div v-if="xianshi2" id="id04">if=false</div> <button onClick="my02()">第2个按钮:读取if的Dom内容</button> </div> <script> //下面是Vue.js的代码块-开始 new Vue({ el: '#app',//app为前面div代码块的id的值,通过“#”绑定 //data区域定义属性的值 data: { xianshi1:true, //定义布尔型值 xianshi2:false //定义布尔型值 //后面没有数据,则这里定义完毕,后面不需要跟上逗号“,” } })//Vue.js的代码块-结束 function my01(){ var tmp= ""; tmp = tmp + "id01内容:" + document.getElementById("id01").innerHTML; tmp = tmp + "| id02内容:" + document.getElementById("id02").innerHTML; //弹出标签的内容 alert(tmp); } function my02(){ //弹出标签的内容 alert("id03内容:" + document.getElementById("id03").innerHTML) //判断id为id04的标签是否存在 if(document.getElementById("id04")){ }else{ //标签不存在 alert("id为'id04'的标签不存在"); } } </script> </body> </html>
效果如图4-5~图4-8所示。
图4-5 页面运行默认效果图
图4-6 读取id="id01"和id="id02"的值
图4-7 读取id="id03"的值
图4-8 读取id="id04"的值