浅析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 相关文章推荐
仿163填写邮件地址自动显示下拉(无优化)
Nov 05 Javascript
IE无法设置短域名下Cookie
Sep 23 Javascript
js静态方法与实例方法分析
Jul 04 Javascript
js 获取后台的字段 改变 checkbox的被选中的状态 代码
Jun 05 Javascript
JS 弹出层 定位至屏幕居中示例
May 21 Javascript
一行命令搞定node.js 版本升级
Jul 20 Javascript
PHP结合jQuery实现的评论顶、踩功能
Jul 22 Javascript
原生js实现放大镜特效
Mar 08 Javascript
JS实现监控微信小程序的原理
Jun 15 Javascript
详解Vue中使用Echarts的两种方式
Jul 03 Javascript
JS插件clipboard.js实现一键复制粘贴功能
Dec 04 Javascript
jquery实现垂直手风琴菜单
Mar 04 jQuery
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
杏林同学录(三)
2006/10/09 PHP
php处理静态页面:页面设置缓存时间实例
2017/06/22 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
javascript 读取xml,写入xml 实现代码
2009/07/10 Javascript
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
关于document.cookie的使用javascript
2010/10/29 Javascript
JavaScript 的继承
2011/10/01 Javascript
Ext JS添加子组件的误区探讨
2013/06/28 Javascript
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
jQuery表单验证插件解析(推荐)
2016/07/21 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
JS实现图片切换效果
2018/11/17 Javascript
详解利用nodejs对本地json文件进行增删改查
2019/09/20 NodeJs
javascript的delete运算符知识点总结
2019/11/19 Javascript
python简单程序读取串口信息的方法
2015/03/13 Python
python中Flask框架简单入门实例
2015/03/21 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
keras多显卡训练方式
2020/06/10 Python
Python通过字典映射函数实现switch
2020/11/06 Python
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
营销与策划个人求职信
2013/09/22 职场文书
电话销售经理岗位职责
2013/12/07 职场文书
请假条标准格式规范
2014/04/10 职场文书
完整版商业计划书
2014/09/15 职场文书
工作检讨书怎么写
2014/10/10 职场文书
初中作文评语集锦
2014/12/25 职场文书
人事局接收函
2015/01/30 职场文书
复兴之路展览观后感
2015/06/02 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers
python 如何做一个识别率百分百的OCR
2021/05/29 Python
win10电脑老是死机怎么办?win10系统老是死机的解决方法
2022/08/05 数码科技