浅析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代码,用以防止图片撑破页面
Mar 12 Javascript
cnblogs TagCloud基于jquery的实现代码
Jun 11 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
Dec 28 Javascript
给文字加上着重号的JS代码
Nov 12 Javascript
js如何调用qq互联api实现第三方登录
Mar 28 Javascript
基于Jquery代码实现手风琴菜单
Nov 19 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
Sep 11 Javascript
js中apply与call简单用法详解
Nov 06 Javascript
JavaScript异步加载问题总结
Feb 17 Javascript
解决Vue+Element ui开发中碰到的IE问题
Sep 03 Javascript
vue和better-scroll实现列表左右联动效果详解
Apr 29 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
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
php Memcache 中实现消息队列
2009/11/24 PHP
PHP常用文件操作函数和简单实例分析
2016/06/03 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
2016/08/19 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
Code:findPosX 和 findPosY
2006/12/20 Javascript
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
浅谈JavaScript之事件绑定
2013/07/08 Javascript
将文本输入框内容加入表中的js代码
2013/08/18 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
在JavaScript中call()与apply()区别
2016/01/22 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
浅析JavaScript动画模拟拖拽原理
2016/12/09 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
Python实现线程池代码分享
2015/06/21 Python
Python实现简单拆分PDF文件的方法
2015/07/30 Python
举例简单讲解Python中的数据存储模块shelve的用法
2016/03/03 Python
pycharm修改界面主题颜色的方法
2019/01/17 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
详解Pandas之容易让人混淆的行选择和列选择
2019/07/10 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
python列表插入append(), extend(), insert()用法详解
2019/09/14 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
信息管理专业学生自荐信格式
2013/09/22 职场文书
土木工程专业自荐信
2013/10/04 职场文书
环保倡议书400字
2014/05/15 职场文书
应届生面试求职信
2014/07/02 职场文书
2014医学院领导班子对照检查材料思想汇报
2014/09/19 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
不服劳动仲裁起诉书
2015/05/20 职场文书
挂职锻炼工作总结2015
2015/05/28 职场文书
2016十一国庆节感言
2015/12/09 职场文书
浅谈Web Storage API的使用
2021/06/23 Javascript
elasticSearch-api的具体操作步骤讲解
2021/06/28 Java/Android
LyScript实现绕过反调试保护的示例详解
2022/08/14 Python