Vue.js从入门到项目实践(超值版)
上QQ阅读APP看书,第一时间看更新

3.1.2 条件指令

除了基本指令外,Vue内置指令还包含条件指令。和JavaScript的条件语句一样,Vue的条件指令可以根据表达式的值在DOM中渲染或者销毁元素/组件。常用的Vue条件指令有v-if、v-else、v-else-if。下面对它们及v-show进行详解。

1.v-if

v-if:条件渲染指令,动态地在DOM内添加或删除DOM元素。

主要用法:根据表达式值的真假判断是否渲染元素,在切换时元素及它的数据绑定/组件被销毁并重建。如果元素是<template>,将提出它的内容作为条件块。

代码如下:

运行效果如图3-10所示。

图3-10 v-if运行效果图

2.v-else

v-else:条件渲染指令,必须与v-if成对使用。

主要用法:v-else元素必须紧跟在v-if或者v-else-if的后面,否则它将不会被识别。

代码如下:

运行效果如图3-11所示。

图3-11 v-else运行效果图

3.v-else-if

v-else-if:判断多层条件,必须跟v-if成对使用。

主要用法:表示v-if的“else if”块,可以链式调用。前一兄弟元素必须有v-if或v-else-if。代码如下:

运行效果如图3-12所示。

图3-12 v-else-if运行效果图

4.v-show

v-show:条件渲染指令,为DOM设置CSS的Style属性。

主要用法:根据表达式的真假值,切换元素的CSS属性display。当条件变化时,该指令触发过渡效果。

提示:带有v-show的元素始终会被渲染并保留在DOM中。

代码如下:

    <!DOCTYPE html>
    <html>
       <head>
         <meta charset="utf-8">
         <title>v-show练习</title>
       </head>
     <body>
         <h3 v-show="ok">Hello Vue!</h3>
    </body>
    </html>

运行效果如图3-13所示。

图3-13 v-show运行效果图

v-show的用法与v-if基本一致,只不过是改变元素的CSS属性display。当v-show表达式的值为false时,元素会隐藏,查看DOM结构会看到元素上加载了内联样式display:none。v-if和v-show具有类似的功能,不过v-if才是真正的条件渲染,它会根据表达式适当地销毁或重建元素及绑定的事件或子组件。若表达式初始值为false,则一开始元素/组件并不会渲染,只有当条件第一次变为真时才开始编译。