浅析Vue.js 中的条件渲染指令


Posted in Javascript onNovember 19, 2018

1 应用于单个元素

Vue.js 中的条件渲染指令可以根据表达式的值,来决定在 DOM 中是渲染还是销毁元素或组件。

html:

<div id="app">
 <p v-if="type===1">拌面</p>
 <p v-else-if="type===2">扁肉</p>
 <p v-else="type===3">其它</p>
</div>

js:

<script>
 var app = new Vue({
  el: '#app',
  data: {
   type: 2
  }
 });
</script>

输出结果:

扁肉

当表达式的值为 true 时,当前元素或组件及所有的子节点都会被渲染出来。

2 应用于多个元素

上述示例中的代码只能判断当前元素, 如果需要一次性判断多个元素,那么可以使用 <template> 元素并在该元素中使用条件指令,最终的渲染结果不会包含 <template> 元素 。

html:

<div id="app2">
 <template v-if="type==='菜单'">
  <p>拌面</p>
  <p>扁肉</p>
  <p>其它</p>
 </template>
</div>

js:

var app2 = new Vue({
 el: '#app2',
 data: {
  type:'菜单'
 }
});

渲染后的代码:

<div id="app2"><p>拌面</p> <p>扁肉</p> <p>其它</p></div>

3 性能上的考量

另外 Vue.js 出于性能方面的考虑,会尽可能地复用已有的元素。

html:

<div id="app3">
 <template v-if="type==='mobile'">
  <label>手机号:</label>
  <input placeholder="请输入手机号">
 </template>
 <template v-else>
  <label>邮箱:</label>
  <input placeholder="请输入邮箱">
 </template>
 <button @click="toggleAccount">切换账号</button>
</div>

js:

var app3 = new Vue({
 el: '#app3',
 data: {
  type: 'mobile'
 },
 methods: {
  toggleAccount: function () {
   this.type = (this.type === 'mobile' ? 'mail' : 'mobile');
  }
 }
});

效果( demo ):

浅析Vue.js 中的条件渲染指令

从示例效果中我们可以发现,输入框的内容并没有发生变化,说明这里 Vue.js 复用了 <input> 元素。

我们也可以通过指定 input 元素的唯一的 key 来避免被复用。

html:

<div id="app3">
 <template v-if="type==='mobile'">
  <label>手机号:</label>
  <input placeholder="请输入手机号" key="mobile">
 </template>
 <template v-else>
  <label>邮箱:</label>
  <input placeholder="请输入邮箱" key="email">
 </template>
 <button @click="toggleAccount">切换账号</button>
</div>

效果:

浅析Vue.js 中的条件渲染指令

我们为每一个 input 指定了 key 属性,所以它们是独立的,每次点击都不一样。而这里的 label 是可复用的,因为我们没有给它设定 key 属性。

总结

以上所述是小编给大家介绍的Vue.js 中的条件渲染指令,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js几秒以后倒计时跳转示例
Dec 26 Javascript
在AngularJS应用中实现一些动画效果的代码
Jun 18 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
Sep 24 Javascript
详解Angular中$cacheFactory缓存的使用
Aug 19 Javascript
微信小程序 switch组件详解及简单实例
Jan 10 Javascript
Ionic+AngularJS实现登录和注册带验证功能
Feb 09 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
Feb 20 Javascript
详解使用mpvue开发github小程序总结
Jul 25 Javascript
浅谈JS和jQuery的区别
Mar 27 jQuery
详解Vuex下Store的模块化拆分实践
Jul 31 Javascript
js 判断当前时间是否处于某个一个时间段内
Sep 19 Javascript
JavaScript中while循环的基础使用教程
Aug 11 Javascript
Vue.js 中的 v-show 指令及用法详解
Nov 19 #Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
Nov 19 #Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
Nov 18 #Javascript
利用原生的JavaScript实现简单拼图游戏
Nov 18 #Javascript
Javascript实现动态时钟效果
Nov 17 #Javascript
使用Javascript简单计算器
Nov 17 #Javascript
JS实现图片切换效果
Nov 17 #Javascript
You might like
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
探讨Hessian在PHP中的使用分析
2013/06/13 PHP
zend optimizer在wamp的基础上安装图文教程
2013/10/26 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
js动态给table添加/删除tr的方法
2013/08/02 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
AngularJS入门之动画
2016/07/27 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
ES6新特性八:async函数用法实例详解
2017/04/21 Javascript
用React实现一个完整的TodoList的示例代码
2017/10/30 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
简单的通用表达式求10乘阶示例
2014/03/03 Python
python django集成cas验证系统
2014/07/14 Python
Python中3种内建数据结构:列表、元组和字典
2014/11/30 Python
python 禁止函数修改列表的实现方法
2017/08/03 Python
用python 批量更改图像尺寸到统一大小的方法
2018/03/31 Python
Python并行分布式框架Celery详解
2018/10/15 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
用python写一个定时提醒程序的实现代码
2019/07/22 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
高性能装备提升营地:Kammok
2019/02/27 全球购物
JSF的标签库有哪些
2012/04/27 面试题
酒店管理专业学生求职信
2013/09/27 职场文书
专科毕业生自我鉴定
2013/12/01 职场文书
省级四好少年事迹材料
2014/01/25 职场文书
社区健康教育实施方案
2014/03/18 职场文书
大学生就业策划书范文
2014/04/04 职场文书
求职意向书范本
2015/05/11 职场文书
智慧人生:永远不需要向任何人解释你自己
2019/08/20 职场文书
晶体管单管来复再生式收音机
2021/04/22 无线电
JavaScript利用html5新方法操作元素类名详解
2021/11/27 Javascript
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python
php解析非标准json、非规范json的方式实例
2022/05/10 PHP
SQL Server删除表中的重复数据
2022/05/25 SQL Server