浅析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 相关文章推荐
javascript 面向对象全新理练之数据的封装
Dec 03 Javascript
jQuery1.6 使用方法一
Nov 23 Javascript
php 中序列化和json使用介绍
Jul 08 Javascript
JavaScript的继承的封装介绍
Oct 15 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
Mar 18 Javascript
C#中使用迭代器处理等待任务
Jul 13 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
Dec 04 Javascript
jQuery点击按钮弹出遮罩层且内容居中特效
Dec 14 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
Jan 19 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
Sep 21 Javascript
JavaScript交换变量常用4种方法解析
Sep 02 Javascript
JavaScript的function函数详细介绍
Nov 20 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
php URL编码解码函数代码
2009/03/10 PHP
两个强悍的php 图像处理类1
2009/06/15 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
2014/08/19 PHP
php截取html字符串及自动补全html标签的方法
2015/01/15 PHP
php将字符串转换成16进制的方法
2015/03/17 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
2016/12/08 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
jquery load()在firefox(火狐)下显示不正常的解决方法
2011/04/05 Javascript
JavaScript实现拼音排序的方法
2012/11/20 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
jQuery Validation Engine验证控件调用外部函数验证的方法
2017/01/18 Javascript
javascript 封装Date日期类实例详解
2017/05/28 Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
2019/04/11 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
javascript 原型与原型链的理解及应用实例分析
2020/02/10 Javascript
Python中的CURL PycURL使用例子
2014/06/01 Python
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
Numpy掩码式数组详解
2018/04/17 Python
深入了解Python在HDA中的应用
2019/09/05 Python
Python sys模块常用方法解析
2020/02/20 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
Python实时监控网站浏览记录实现过程详解
2020/07/14 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
CSS实现半透明边框与多重边框的场景分析
2019/11/13 HTML / CSS
error和exception有什么区别
2012/10/02 面试题
工程造价管理专业大专生求职信
2013/10/06 职场文书
中学实习教师自我鉴定
2013/12/12 职场文书
学校联谊活动方案
2014/02/15 职场文书
消防工作实施方案
2014/06/09 职场文书
解除劳动合同证明书
2014/09/26 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
2015年五一劳动节演讲稿
2015/03/18 职场文书
公司年会开场白
2015/06/01 职场文书
优秀班干部主要事迹材料
2015/11/04 职场文书