Vue.js 源码分析(十七) 指令篇 v-if、v-else-if和v-else 指令详解

v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回true值的时候被渲染。

v-else-if,顾名思义,充当 v-if 的“else-if 块”,可以连续使用:

也可以使用 v-else 指令来表示 v-if 的“else 块”:

挺好理解的,就和大多数的语言的if()....else if()...else逻辑语句是一样的,例如:

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Documenttitle>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js">script>
head>
<body>
    <script>
        Vue.config.productionTip=false;
        Vue.config.devtools=false;
    script>
    <div id="app">
        <p v-if="no<0">n小于0p>
        <p v-else-if="no==0">no等于0p>
        <p v-else>no大于0p>
    div>
    <script>var app = new Vue({el:'#app',data:{no:2}})script>
body>
html>

渲染为:

有两个注意点:

  v-else和v-else-if 必须紧跟在带 v-if 或者 v-else-if 的元素之后,一会儿将源码的时候会讲到为什么

  因为 v-if 是一个指令,所以必须将它添加到一个元素上。但是如果想切换多个元素呢?此时可以把一个