浅析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 ready()的几种实现方法小结
Jun 18 Javascript
Javascript类库的顶层对象名用户体验分析
Oct 24 Javascript
JS 实现获取打开一个界面中输入的值
Mar 19 Javascript
js动态给table添加/删除tr的方法
Aug 02 Javascript
JavaScript中匿名函数的递归调用
Jan 22 Javascript
详解Vue 动态添加模板的几种方法
Apr 25 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
Dec 18 jQuery
JavaScript ES6中的简写语法总结与使用技巧
Dec 30 Javascript
JS大坑之19位数的Number型精度丢失问题详解
Apr 22 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
Jul 22 Javascript
微信小程序如何播放腾讯视频的实现
Sep 20 Javascript
从零使用TypeScript开发项目打包发布到npm
Feb 14 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
DC四月将推出百页特刊漫画 纪念小丑诞生80周年
2020/04/09 欧美动漫
php为什么选mysql作为数据库? Mysql 创建用户方法
2007/07/02 PHP
PHP实现数字补零功能的2个函数介绍
2014/05/12 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
POST一个JSON格式的数据给Restful服务实例详解
2017/04/07 PHP
Js event事件在IE、FF兼容性问题
2011/01/01 Javascript
js自动闭合html标签(自动补全html标记)
2012/10/04 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
JavaScript获取onclick、onchange等事件值的代码
2013/07/22 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
node.js实现的装饰者模式示例
2017/09/06 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
vue.js中npm安装教程图解
2018/04/10 Javascript
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
2018/10/26 Javascript
详解JavaScript 为什么要有 Symbol 类型?
2019/04/03 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
Python获取apk文件URL地址实例
2013/11/01 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
python3.8下载及安装步骤详解
2020/01/15 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
周仰杰(JIMMY CHOO)法国官方网站:闻名世界的鞋子品牌
2019/09/27 全球购物
银行出纳岗位职责
2013/11/25 职场文书
交通安全演讲稿
2014/01/07 职场文书
旅游管理毕业生自荐书
2014/02/02 职场文书
乡镇党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
会计岗位职责
2015/02/03 职场文书
Python3 使用pip安装git并获取Yahoo金融数据的操作
2021/04/08 Python