之前的文章我们说了一下 vue 的样式绑定,这篇文章来介绍一下 vue 中的条件渲染,先看下面的代码:

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue</title>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>
<body>
<div id="app">
<p v-if="show">{{title}} 1 </p>
<p v-show="show">{{title}} 2 </p>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
title: "hello world",
show: true,
},
})
</script>
</body>
</html>

我们在 HTML 内定义了两个 p 标签,并在 p 标签内分别定义了 v-if="show" 和 v-show="show" 两个属性,在 data 里定义了 show: true 的数据,我们通过 v-if  和 v-show 将 p 标签与 vue 实例建立连接,两者的意思均是当 data 里的数据 show 为 true 时显示,为 false 时不显示,结果如下:

我们可以看到当 app.show 数据为 false 时 HTML 代码中的 p 标签内容并没有在页面上显示,那两者有什么区别呢,我们通过控制台看一下 HTML 代码:

以上我们可以看出当 app.show = false;时 v-if 的 p 标签被删除了,而 v-show = false;时的 p 标签是添加了一个 style="display: none";的样式。

由此我们可以得出,如果是频发操作 DOM 我们建议用 v-show 指令,这样可以有效的减少 DOM 的挂载和删除,那 v-if 有没有更好的用处呢,看一下代码:

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue</title>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>
<body>
<div id="app">
<p v-if="show">{{title}} 1 </p>
<p v-else="show">{{title}} 2 </p> </div>
<script>
var app = new Vue({
el: '#app',
data: {
title: "hello world",
show: true,
},
})
</script>
</body>
</html>

我们将上端代码中的 v-show 换成了 v-else,执行代码的意思时就变成了当 data 里的数据 show 为 true 时显示第一个 p 标签里的内容,当 data 里的数据 show 为 false 时显示第二个 p 标签里的内容,结果如下:

当然我们也可以在 v-if 和 v-show 之间再加 v-else-if 的语法,这里就不演示了,需要注意的是如果我们使用这样的方式,那么在这种语法之间不能再添加任何其他的标签,如 <p v-if ></p> <span></span> <p v-else-if ></p> <a></a><p v-else ></p>。

Vue 进阶之路(五)的更多相关文章

  1. Vue 进阶之路(九)

    之前的文章我们介绍了 vue 中父组件之间的传值,本章我们再来看一下父子组件间传值的参数校验和非 Props 特性. <!DOCTYPE html> <html lang=" ...

  2. Vue 进阶之路(八)

    之前的文章我们对组件 component 进行了简单的介绍,本章我们将深入了解一下组件,并实现父子组件间的传值. <!DOCTYPE html> <html lang="e ...

  3. Vue 进阶之路(七)

    之前的文章我们对 vue 的列表输出做了介绍,本章我们来看一下 vue 的组件 component. <!DOCTYPE html> <html lang="en" ...

  4. Vue 进阶之路(六)

    上篇文章我们分析了一下 vue 中的条件渲染,本篇我们说一下 vue 中的列表渲染和 set 方法. <!DOCTYPE html> <html lang="en" ...

  5. Vue 进阶之路(四)

    之前的文章我们已经对 vue 有了初步认识,这篇文章我们通过一个例子说一下 vue 的样式绑定. 现在我们想要是想这样一个需求,页面上有个单词,当我们点击它的时候颜色变为红色,再点击一次变为原来的颜色 ...

  6. Vue 进阶之路(三)

    之前的文章我们已经对 vue 有了初步认识,这篇文章我们通过一个例子说一下 vue 的方法 methods,计算属性 computed 和监听器 watch. 现在我们有一个需求,变量 firstNa ...

  7. Vue 进阶之路(二)

    之前的文章我们初识了 vue,对其原理,数据绑定和方法进行了简单的演示,本篇将对 vue 插值表达式,v-text,v-html 进行讲解. <!DOCTYPE html> <htm ...

  8. Vue 进阶之路(一)

    vue 3.x 马上就要问世了,显然尤大大是不想让我们好好活了,但是转念一想,比你优秀的人都还在努力,那我们努力还有什么用,开个玩笑而已,本人对于 vue 的接触时间不长,对其也没有深入地去研究源码, ...

  9. Vue 进阶之路(十)

    之前的文章介绍了 vue 的组件化,本章我们来看一下 vue 中组件的原生事件. <!DOCTYPE html> <html lang="en"> < ...

随机推荐

  1. MVC-AOP(面向切面编程)思想-Filter之IExceptionFilter-异常处理

    HandleErrorAttribute MVC中的基本异常分类: Action异常      T view异常 T, service异常     T, 控制器异常      F(异常get不到), ...

  2. Oracle VM VirtualBox(一) 快速拷贝一个新的虚拟机

    快速拷贝一个新的虚拟机 一 找到虚拟机vdi文件,复制一份并重命名. 二 修改新虚拟机的UUID 注:不修改创建不了虚拟机,会抛出Oracle VM VirtualBox UUID already e ...

  3. Python3实现ICMP远控后门(上)_补充篇

    ICMP后门(上)补充篇 前言 在上一篇文章Python3实现ICMP远控后门(上)中,我简要讲解了ICMP协议,以及实现了一个简单的ping功能,在文章发表之后,后台很多朋友留言,说对校验和的计算不 ...

  4. 解决vue在ios或android中用webview打开H5链接时#号后面的参数被忽略问题angular同样适用

    在ios或android如果直接用webview在打开H5链接例如: 打开:http://localhost:8080/#/answer?id=1509335039582001 会变成 http:// ...

  5. ectouch 概述

    模块(The Model): 即M 主要包含那些用来操作数据库的函数 文件后缀一般是***Model.class.php 路径一般是../mobile/include/apps/default/mod ...

  6. 最近面了不少java开发,据此来说下我的感受:哪怕事先只准备1小时,成功概率也能大大提升

    本人最近几年一直在做java后端方面的技术面试官,而在最近两周,又密集了面试了一些java初级和高级开发的候选人,在面试过程中,我自认为比较慎重,遇到问题回答不好的候选人,我总会再三从不同方面提问,只 ...

  7. Rabbit MQ 延迟插件rabbitmq_delayed_message_exchange的使用

    环境: windows server 2008 R2 rabbitmq 3.7.2 下载插件: http://www.rabbitmq.com/community-plugins.html 注意要下载 ...

  8. Python(2)深入Python函数定义

    Python学习 Part2:深入Python函数定义 在Python中,可以定义包含若干参数的函数,这里有几种可用的形式,也可以混合使用: 1. 默认参数 最常用的一种形式是为一个或多个参数指定默认 ...

  9. Java 领域从传统行业向互联网转型你必须知道的事儿

    我为什么要写这篇文章 武林中,"天下武功出少林"指各门各派的武功都与少林武学有一定的渊源,技术也是相同的道理,对于Java领域的应用而言,传统行业与互联网行业的技术都来自J2SE和 ...

  10. SqlSugar 盲点

    1.读取数据库连接 private SqlSugarClient GetInstance() { string conmstring = System.Web.Configuration.WebCon ...