浅析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与函数式编程解释
Apr 27 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
Aug 31 Javascript
详解js的事件处理函数和动态创建html标记方法
Dec 16 Javascript
BootStrap实现鼠标悬停下拉列表功能
Feb 17 Javascript
常用的几个JQuery代码片段
Mar 13 Javascript
jQuery实现简单的抽奖游戏
May 05 jQuery
Webpack性能优化 DLL 用法详解
Aug 10 Javascript
Javascript获取某个月的天数
May 30 Javascript
Node.js动手撸一个静态资源服务器的方法
Mar 09 Javascript
详解微信小程序用定时器实现倒计时效果
Apr 30 Javascript
详解vue-router 动态路由下子页面多页共活的解决方案
Dec 22 Javascript
JS常见错误(Error)及处理方案详解
Jul 02 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
thinkphp判断访客为手机端或PC端的方法
2014/11/24 PHP
PHP实现唤起微信支付功能
2019/02/18 PHP
仅img元素创建后不添加到文档中会执行onload事件的解决方法
2011/07/31 Javascript
JavaScript 实现鼠标拖动元素实例代码
2014/02/24 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
2014/04/02 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
node.js中的fs.lstatSync方法使用说明
2014/12/16 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
Vue数据驱动模拟实现1
2017/01/11 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
Vue 理解之白话 getter/setter详解
2019/04/16 Javascript
[00:32]2018DOTA2亚洲邀请赛EG出场
2018/04/03 DOTA
在Python的Django框架上部署ORM库的教程
2015/04/20 Python
python基于urllib实现按照百度音乐分类下载mp3的方法
2015/05/25 Python
谈谈python中GUI的选择
2018/03/01 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
python 不同方式读取文件速度不同的实例
2018/11/09 Python
python 3.6.7实现端口扫描器
2019/09/04 Python
Python字典深浅拷贝与循环方式方法详解
2020/02/09 Python
python集合删除多种方法详解
2020/02/10 Python
使用Puppeteer爬取微信文章的实现
2020/02/11 Python
Java ExcutorService优雅关闭方式解析
2020/05/30 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
如何转换一个字符串到enum值
2014/04/12 面试题
函授毕业生的自我鉴定
2013/11/26 职场文书
会计岗位职责范本
2014/03/07 职场文书
大气污染防治方案
2014/05/19 职场文书
校庆活动策划方案
2014/06/05 职场文书
2015年党性分析材料
2014/12/19 职场文书
2015年社区教育工作总结
2015/05/13 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
XX部保密工作制度范本
2019/08/27 职场文书
解决python3安装pandas出错的问题
2021/05/20 Python
mysql性能优化以及配置连接参数设置
2022/05/06 MySQL