浅析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 相关文章推荐
jQuery 常见操作实现方式和常用函数方法总结
May 06 Javascript
JavaScript实现点击按钮字体放大、缩小
Feb 29 Javascript
微信小程序 增、删、改、查操作实例详解
Jan 13 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
Feb 20 Javascript
JS实现闭包中的沙箱模式示例
Sep 07 Javascript
React 组件间的通信示例
Jun 14 Javascript
vue-cli 打包使用history模式的后端配置实例
Sep 20 Javascript
原生js实现Flappy Bird小游戏
Dec 24 Javascript
详解写好JS条件语句的5条守则
Feb 28 Javascript
JS实现的排列组合算法示例
Jul 16 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
Dec 06 Javascript
JavaScript构造函数原理及实现流程解析
Nov 19 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获取汉字的拼音(全部与首字母)
2013/06/27 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
php实现点击可刷新验证码
2015/11/07 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
2019/10/11 PHP
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
网易JS面试题与Javascript词法作用域说明
2010/11/09 Javascript
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
2011/01/27 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
js中 javascript:void(0) 用法详解
2015/08/11 Javascript
深入理解JavaScript中为什么string可以拥有方法
2016/05/24 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
jquery对象与DOM对象转化
2017/02/08 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
修改Vue打包后的默认文件名操作
2020/08/12 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
Python中使用wxPython开发的一个简易笔记本程序实例
2015/02/08 Python
在Django中创建动态视图的教程
2015/07/15 Python
详解Python发送邮件实例
2016/01/10 Python
pandas Dataframe行列读取的实例
2018/06/08 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
PyQt5 在label显示的图片中绘制矩形的方法
2019/06/17 Python
英国领先的珍珠首饰品牌:Orchira
2016/09/11 全球购物
德国狗狗用品在线商店:Schecker
2017/03/17 全球购物
优质的学校老师推荐信
2013/10/28 职场文书
研发工程师的岗位职责
2013/11/18 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
公证委托书标准格式
2014/09/11 职场文书
初中体育教学随笔
2015/08/15 职场文书
JavaCV实现照片马赛克效果
2022/01/22 Java/Android