浅析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 相关文章推荐
window.location.hash 使用说明
Nov 08 Javascript
jQuery中jqGrid分页实现代码
Nov 04 Javascript
原生JavaScript编写俄罗斯方块
Mar 30 Javascript
js实现索引图片切换效果
Nov 21 Javascript
js控件Kindeditor实现图片自动上传功能
Jul 20 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
Mar 02 Javascript
微信小程序 页面传值详解
Mar 10 Javascript
jQuery+ajax实现修改密码验证功能实例详解
Jul 06 jQuery
使用JavaScript实现一个小程序之99乘法表
Sep 21 Javascript
vue.js实现备忘录demo
Jun 26 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
Sep 05 Javascript
微信小程序组件生命周期的踩坑记录
Mar 03 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中DOMElement操作xml文档实例演示
2013/03/26 PHP
php addslashes 利用递归实现使用反斜线引用字符串
2013/08/05 PHP
浅析PHP程序设计中的MVC编程思想
2014/07/28 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
2014/08/11 PHP
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
2012/01/13 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
深入讲解AngularJS中的自定义指令的使用
2015/06/18 Javascript
学习jQuey中的return false
2015/12/18 Javascript
leaflet的开发入门教程
2016/11/17 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
详解Webpack实战之构建 Electron 应用
2017/12/25 Javascript
JS中promise化微信小程序api
2018/04/12 Javascript
python paramiko实现ssh远程访问的方法
2013/12/03 Python
python访问sqlserver示例
2014/02/10 Python
Python实现Kmeans聚类算法
2020/06/10 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
2019/05/07 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
HTML5中原生的右键菜单创建方法
2016/06/28 HTML / CSS
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
大专应届生个人简历的自我评价
2013/10/15 职场文书
九年级体育教学反思
2014/01/23 职场文书
企业员工培训感言
2014/02/26 职场文书
担保书怎么写
2014/04/01 职场文书
元旦寄语大全
2014/04/10 职场文书
感恩的演讲稿
2014/05/06 职场文书
霸气押韵的班级口号
2014/06/09 职场文书
大学生求职信
2014/06/17 职场文书
七一党日活动总结
2014/07/08 职场文书
七夕活动策划方案
2014/08/16 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python