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 ...
随机推荐
- springboot系列二、springboot项目搭建
一.官网快速构建 1.maven构建项目 1.访问http://start.spring.io/ 2.选择构建工具Maven Project.Spring Boot版本2.1.1以及一些工程基本信息, ...
- Java快速学习笔记01
这一波快速学习主要是应付校招笔面试用,功利性质不可避免. 学习网址: http://www.runoob.com/java/java-tutorial.html 执行命令解析: 以上我们使用了两个命令 ...
- 003_饿了么chaosmonkey实现
背景 公司目前的服务设计大部分满足 design for failure 理念.随着业务复杂度的提升,我们很难再保证对系统故障的容错性.我们需要工具来验证服务的容错性,基于这个需求我们使用了 tc 工 ...
- python实现简单登陆流程
登陆流程图: 代码实现: #-*- coding=utf-8 -*- import os,sys,getpass ''' user.txt 格式 账号 密码 是否锁定 错误次数 jack 123 un ...
- Expm 3_2 寻找最邻近的点对
[问题描述] 设p1=(x1,y1), p2=(x2,y2), … , pn=(xn,yn) 是平面上n个点构成的集合S,设计和实现找出集合S中距离最近点对的算法. 每一个格子最多只能存在一个点, ...
- IDEA运行TestNG报错rg.testng.TestNGException: org.xml.sax.SAXParseException;
从eclipse复制的依赖注解,一运行测试脚本发现报错如下: "F:\Program Files\Java\jdk1.7.0_17\bin\java" -ea -Didea.lau ...
- C#面向对象(基础知识)
面向对象:就是CLASS,class就是用户自定义类型: class:用户自定义引用类型:三大特点:封装.继承.多态: 解决方案中右键添加class:class内可以写结构体,枚举,函数: C#中各个 ...
- ValueError: total size of new array must be unchanged
在对数据增强后的faster rcnn中进行训练时,出现这个错误,原因是在lib/roi_data_layer/layer.py中,会出现 inds = np.reshape(inds, (-1,2) ...
- SPLAY,LCT学习笔记(五)
这一篇重点探讨LCT的应用 例:bzoj 2631 tree2(国家集训队) LCT模板操作之一,利用SPLAY可以进行区间操作这一性质对维护懒惰标记,注意标记下传顺序和如何下传 #include & ...
- 性能测试三十五:jvm垃圾回收-GC
垃圾回收-GC 三个问题 哪些内存需要回收? 什么时候回收? 如何回收? YoungGC和FullGC: 新生代引发的GC叫YoungGC 老年代引发的GC叫FullGC FullGC会引起整个Jvm ...