浅析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 放大镜 放大倍率和视窗尺寸
May 09 Javascript
jquery 回车事件实现代码
Aug 23 Javascript
jQuery 图片切换插件(代码比较少)
May 07 Javascript
jQuery获取字符串中出现最多的数
Feb 22 Javascript
Javascript中for循环语句的几种写法总结对比
Jan 23 Javascript
浅谈原生JS实现jQuery的animate()动画示例
Mar 08 Javascript
vue使用stompjs实现mqtt消息推送通知
Jun 22 Javascript
微信小程序 共用变量值的实现
Jul 12 Javascript
JavaScript两种计时器的实例讲解
Jan 31 Javascript
Django模板继承 extend标签实例代码详解
May 16 Javascript
解析原来浏览器原生支持JS Base64编码解码
Aug 12 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
Nov 06 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安装攻略:常见问题解答(三)
2006/10/09 PHP
PHP入门教程之上传文件实例详解
2016/09/11 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
2019/10/17 PHP
根据分辩率调用不同的CSS.
2007/01/08 Javascript
javascript编程起步(第六课)
2007/02/27 Javascript
JQuery 拾色器插件发布-jquery.icolor.js
2010/10/20 Javascript
fastclick插件导致日期(input[type=&quot;date&quot;])控件无法被触发该如何解决
2015/11/09 Javascript
javascript检测flash插件是否被禁用的方法
2016/01/14 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
2016/06/23 Javascript
通过jquery实现页面的动画效果(实例代码)
2016/09/18 Javascript
JavaScript制作颜色反转小游戏
2016/09/25 Javascript
js带闹铃功能的倒计时代码
2016/09/29 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
JS实现的input选择图片本地预览功能示例
2018/08/29 Javascript
vue+layui实现select动态加载后台数据的例子
2019/09/20 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
Python中elasticsearch插入和更新数据的实现方法
2018/04/01 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
2021/03/03 Python
CSS伪类与CSS伪元素的区别及由来具体说明
2012/12/07 HTML / CSS
CSS3中Animation属性的使用详解
2015/08/06 HTML / CSS
HTML5标签小集
2011/08/02 HTML / CSS
中国综合性网上购物商城:当当(网上卖书起家)
2016/11/16 全球购物
Too Faced官网:美国知名彩妆品牌
2017/03/07 全球购物
销售总监岗位职责
2014/01/04 职场文书
纪念九一八爱国演讲稿600字
2014/09/14 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
关于倡议书的范文
2015/04/29 职场文书
学校就业保障协议书
2019/06/24 职场文书
浅谈Python numpy创建空数组的问题
2021/05/25 Python
讲解MySQL增删改操作
2022/05/06 MySQL