浅析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 相关文章推荐
IE php关于强制下载文件的代码
Aug 23 Javascript
jQuery Ajax之$.get()方法和$.post()方法
Oct 12 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
Aug 07 Javascript
jQuery的live()方法对hover事件的处理示例
Feb 27 Javascript
js实现右下角提示框的方法
Feb 03 Javascript
AngularJS整合Springmvc、Spring、Mybatis搭建开发环境
Feb 25 Javascript
jquery实现表单获取短信验证码代码
Mar 13 Javascript
微信小程序 后台登录(非微信账号)实例详解
Mar 31 Javascript
React Native中导航组件react-navigation跨tab路由处理详解
Oct 31 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
Jan 20 Javascript
VUE脚手架具体使用方法
May 20 Javascript
Javascript实现秒表计时游戏
May 27 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
图书管理程序(一)
2006/10/09 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
学习php设计模式 php实现适配器模式
2015/12/07 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
2016/05/19 PHP
替换php字符串中的单引号为双引号的方法
2017/02/16 PHP
一个用js实现的页内搜索代码
2007/05/23 Javascript
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
JavaScript设计模式之代理模式介绍
2014/12/28 Javascript
javascript实现随机显示星星特效
2016/01/28 Javascript
简单实现轮播图效果的实例
2016/07/15 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
jQuery源码分析之sizzle选择器详解
2017/02/13 Javascript
js排序与重组的实例讲解
2017/08/28 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
js实现倒计时秒杀效果
2020/03/25 Javascript
解决python爬虫中有中文的url问题
2018/05/11 Python
启动Atom并运行python文件的步骤
2018/11/09 Python
搭建python django虚拟环境完整步骤详解
2019/07/08 Python
Python 项目转化为so文件实例
2019/12/23 Python
在阿尔卑斯山或希腊度过快乐假期:Alpine Elements
2019/12/28 全球购物
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
电大毕业自我鉴定
2014/02/03 职场文书
信息服务专业毕业生求职信
2014/03/02 职场文书
入党自荐书范文
2014/03/09 职场文书
学生个人自我鉴定范文
2014/03/28 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
合作合同协议书范本
2015/01/27 职场文书
运动会闭幕词
2015/01/28 职场文书
社区工作者个人总结
2015/02/28 职场文书
详解JavaScript中Arguments对象用途
2021/08/30 Javascript
教你使用Jenkins集成Harbor自动发布镜像
2022/04/03 Servers
Android开发EditText禁止输入监听及InputFilter字符过滤
2022/06/10 Java/Android