vue中的dom指令控制
一、条件控制指令
1、v-if,条件渲染
<div id="J_app"> <p v-if="show">显示该标签</p> </div> var vapp = new Vue({ el: '#J_app', data: { show: true } })
2、template使用
template元素最终不会出现在dom中
<div id="J_app"> <template v-if="isdisplay"> <h1>模板标签会隐藏</h1> <p>模板标签会隐藏</p> <p>模板标签会隐藏</p> </template> </div> var vapp = new Vue({ el: '#J_app', data: { isdisplay: true } })
3、v-else使用
<div id="J_app"> <div v-if="type === 'A'"> A </div> <div v-else-if="type === 'B'"> B </div> <div v-else-if="type === 'C'"> C </div> <div v-else> Not A/B/C </div> </div> var vapp = new Vue({ el: '#J_app', data: { type: 'D' } })
4、数据遗留
<div id="J_app"> <template v-if="loginType === 'username'"> <label>Username</label> <input placeholder="Enter your username"> </template> <template v-else> <label>Email</label> <input placeholder="Enter your email address"> </template> </div>
5、数据不遗留
<div id="J_app"> <template v-if="loginType === 'username'"> <label>Username</label> <input placeholder="Enter your username" key="username-input"> </template> <template v-else> <label>Email</label> <input placeholder="Enter your email address" key="email-input"> </template> </div>
6、v-show,条件展示
<div id="J_app"> <p v-show="isdisplay">只是做了隐藏,元素本身没有从dom上消失</p> </div> var vapp = new Vue({ el: '#J_app', data: { isdisplay: true } })
v-show不支持template,也不支持v-else,通过是否添加display:none控制显隐,v-if的切换开销比较大。
二、循环控制指令
1、固定值
<div id="J_app"> <span v-for="i in 10"> {{ i }} </span> </div>
2、template使用
<div id="J_app"> <ul> <template v-for="item in items"> <li>{{ item.option }}</li> <li class="divider"></li> </template> </ul> </div> var vapp = new Vue({ el: '#J_app', data: { items: [ { option: '前进' }, { option: '后退' }, { option: '休息' } ] } })
3、遍历数组
<div id="J_app"> <ol> <li v-for="item in items" :key="item.id"> {{ item.text }} </li> </ol> </div> var vapp = new Vue({ el: '#J_app', data: { items: [ { text: '学习 webpack' }, { text: '学习 Vue' }, { text: '整个牛项目' } ] } })
<div id="J_app"> <ol> <li v-for="(item,index) in items"> {{ flag }} - {{ item.index }} - {{ item.text }} </li> </ol> </div> var vapp = new Vue({ el: '#J_app', data: { flag: "parent", items: [ { text: '学习 webpack' }, { text: '学习 Vue' }, { text: '整个牛项目' } ] } }) //改变原数组,数组变异 vapp.items.push({text:'学习es6'}) //返回新数组 vapp.items = vapp.items.filter(function (item) { return item.text.match(/学习/) }) //修改某项 Vue.set(vapp.items, 2, { text: '学习vue,需要基础知识做铺垫'})
<div id="J_app"> <ol> <li v-for="num in evenNumbers"> {{ num }} </li> </ol> </div> //显示数组过滤的副本,而不改变原来的数组 var vapp = new Vue({ el: '#J_app', data: { numbers: [ 1, 2, 3, 4, 5 ] }, computed: { evenNumbers: function () { return this.numbers.filter(function (number) { return number % 2 === 0 }) } } })
<div id="J_app"> <ol> <li v-for="num in even(numbers)"> {{ num }} </li> </ol> </div> var vapp = new Vue({ el: '#J_app', data: { numbers: [ 1, 2, 3, 4, 5 ] }, methods: { even: function (numbers) { return numbers.filter(function (number) { return number % 2 === 0 }) } } })
4、遍历对象
<ul id="J_app"> <li v-for="value in personObj"> {{ value }} </li> </ul> var vapp = new Vue({ el: '#J_app', data: { personObj: { firstName: 'Camille', lastName: 'Hou', age: 30 } } }) //添加sex属性到personObj对象 Vue.set(vapp.personObj,'sex','male') //也可以用 vapp.$set(vapp.personObj,'sex','male') //为已有对象赋予多个属性值 vapp.personObj = Object.assign({}, vapp.personObj, { weight: 105, len: '158cm' })
<div id="J_app"> <div v-for="(value, key) in personObj"> {{ key }}:{{ value }} </div> </div> var vapp = new Vue({ el: '#J_app', data: { personObj: { firstName: 'Camille', lastName: 'Hou', age: 30 } } })
<div id="J_app"> <div v-for="(value, key, index) in personObj"> {{ index }}、{{ key }}、{{ value }} </div> </div> var vapp = new Vue({ el: '#J_app', data: { personObj: { firstName: 'Camille', lastName: 'Hou', age: 30 } } })
vue中的dom指令控制的更多相关文章
- Vue中获取dom元素
Vue.js虽然说是数据驱动页面的,但是有时候我们也要获取dom对象进行一些操作. vue的不同版本获取dom对象的方法不一样 Vue.js 1.0版本中,通过v-el绑定,然后通过this.els ...
- 第七十六篇:ref引用(在vue中引用Dom的方法)
好家伙, 引子: jQuery简化了程序员操作DOM的过程 vue 优势:MVVM 在vue中,程序员不需要操作DOM.程序员只需要把数据维护好即可!(数据驱动视图) 那么若要在vue中操作dom,这 ...
- vue中常见的指令
1,差值表达式{{}} <p >{{ msg }}</p> 2.v-cloak解决差值表达式闪烁的问题 <p v-cloak>{{ msg }}</p> ...
- [记录] Vue中的dom操作
使用过Vue的同学都应该有这样一个感觉,在vue中页面是基于数据驱动的,不需要我们自己操作dom,框架帮我们完成了这一步,事实上Vue官方也建议我们这样做 在绝大多数情况下是不需要操作dom就可以完成 ...
- 在vue中创建自定义指令
原文:https://dev.to/ratracegrad/creating-custom-directives-in-vue-58hh 翻译:心上有杨 指令是带有 v- 前缀的特殊属性.指令的作用是 ...
- Vue中v-on的指令以及一些其他指令
1.v-on的基本使用 <div id="app"> <!-- 使用事件绑定的简写形式 --> <input type="button&qu ...
- Vue中 等待DOM或者数据完成 在执行 --this.$nextTick()
虽然 Vue.js 通常鼓励开发人员沿着“数据驱动”的方式思考,避免直接接触 DOM,但是有时我们确实要这么做.比如一个新闻滚动的列表项.如果在这里需要操作dom, 应该是等待 Vue 完成更新 DO ...
- 在vue中操作dom元素
在vue中可以通过给标签加ref属性,就可以在js中利用ref去引用它,从而达到操作该dom元素,以下是个参考例子 1 <template> 2 <div> 3 <div ...
- vue中操作Dom节点的方法
1.vue中ref操作dom节点 <template> <div id="app"> <div </div> <button @cl ...
随机推荐
- WebsphereMQ搭建集群
#https://www.ibm.com/developerworks/cn/websphere/library/techarticles/1202_gaoly_mq/1202_gaoly_mq.ht ...
- 简单解决“ORA-27100: shared memory realm already exists”的问题
背景 看到这篇文章,算是当初记录过程的一篇了,不像别的,只是有个结果算火.只是感觉到现在可能是碰不见这个问题了,现在哪有32位的oracle啊.可见技术随着岁月的变化,真不知10年后再看今天的问题,可 ...
- rabbitmq 源码安装
官网地址:rabbitmqhttp://www.rabbitmq.com/releases/rabbitmq-server/官网地址:erlanghttp://erlang.org/download/ ...
- React-Native 之 项目实战(一)
前言 本文有配套视频,可以酌情观看. 文中内容因各人理解不同,可能会有所偏差,欢迎朋友们联系我. 文中所有内容仅供学习交流之用,不可用于商业用途,如因此引起的相关法律法规责任,与我无关. 如文中内容对 ...
- nagios系列(四)之nagios主动方式监控tcp常用的80/3306等端口监控web/syncd/mysql及url服务
nagios主动方式监控tcp服务web/syncd/mysql及url cd /usr/local/nagios/libexec/ [root@node4 libexec]# ./check_tcp ...
- JS正则表达式大全(附例子)
0 前言 正则表达式用来字符串匹配,格式校验,非常cool且有趣. 1 正则表达式中的特殊字符 \ 做为转义,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符" ...
- java 标签编译后没有显示
1.原因现在还不知,试了几个地方可以和不可以 /** * @author feilong */ public class OverLoading { /**@param args put here c ...
- cf803c 数论
细节很多的题 #include<bits/stdc++.h> using namespace std; #define ll long long int main(){ ll n,k,tm ...
- poj2481树状数组解二维偏序
按区间r降序排列,r相同按照l升序排列,两个区间相同时特判一下即可 /* 给定n个闭区间[l,r],如果对区间[li,ri],[lj,rj]来说, 有区间j严格包含(两个边界不能同时重合)在区间i内, ...
- python+selenium四:iframe查看、定位、切换
iframe是HTML里面嵌套HTML的一种框架 1.查看iframe 1.Top Window:可直接定位 2.iframe#i:说明此元素在iframe上 3.iframe显示为空:(id或nam ...