一.基础指令
1.插值表达式
目标:在dom标签里,直接插入内容
- 语法
- {{表达式}} # 可以是数据变量或表达式
2.v-bind
目标:给标签属性设置vue变量的值
- 语法
- v-bind:属性名="vue变量"
- 简写: :属性名="vue变量
3. v-on
目标:给标签绑定事件
- 语法
- v-on:事件名="要执行的少量代码"
- v-on:事件名="methods中的函数"
- v-on:事件名="methods中的函数(实参)"
- 简写: @事件名="methods中的函数"
4. v-on事件对象
目标: vue事件处理函数中, 拿到事件对象
- 无传参, 通过形参直接接收
- 传参, 通过$event指代事件对象传给事件处理函数
#例
<a @click="one" ></a>
<a @click="two(10, $event)" ></a>
methods: {
one(e){
e.preventDefault()
},
two(num, e){
e.preventDefault()
}
}
5. v-on修饰符
目的: 在事件后面.修饰符名 - 给事件带来更强大的功能
- 语法:
-
@事件名.修饰符="methods里函数"
- .stop - 阻止事件冒泡
- .prevent - 阻止默认行为
- .once - 程序运行期间, 只触发一次事件处理函数
-
@click.prevent.stop # 阻止冒泡和默认行为
6. v-on按键修饰符
目标: 给键盘事件, 添加修饰符, 增强能力
- 语法:
- @keyup.enter - 监测回车按键
- @keyup.esc - 监测返回按键
7. v-model
目标: 把value属性和vue数据变量, 双向绑定到一起
- 语法: v-model="vue数据变量"
- 双向数据绑定
- 数据变化 -> 视图自动同步
- 视图变化 -> 数据自动同步
- 演示: 用户名绑定 - vue内部是MVVM设计模式
本阶段v-model只能用在表单元素上
下拉菜单要绑定在select上
遇到复选框, v-model的变量值
非数组 - 关联的是复选框的checked属性
数组 - 关联的是复选框的value属性
8. v-model修饰符
目标: 让v-model拥有更强大的功能
- 语法:
- v-model.修饰符="vue数据变量"
- .number 以parseFloat转成数字类型
- .trim 去除首尾空白字符
- .lazy 在change时触发而非输入时
- v-model.修饰符="vue数据变量"
9. v-text和v-html
目的: 更新DOM对象的innerText/innerHTML
- 语法:
- v-text="vue数据变量"
- v-html="vue数据变量"
- 注意: 会覆盖插值表达式
作用:都可以设置标签显示的内容
区别:
v-text把值当成普通字符串显示
v-html把值当做html解析
10.v-show和v-if
目标: 控制标签的隐藏或出现
- 语法:
- v-show="vue变量"
- v-if="vue变量"
- 原理
- v-show 用的display:none隐藏 (频繁切换使用)
- v-if 直接从DOM树上移除
- 高级
- v-else使用
<p v-if="age > 18">我成年了</p>
<p v-else>还得多吃饭</p>
11. v-for
目标: 列表渲染, 所在标签结构, 按照数据数量, 循环生成
- 语法
- v-for="(值, 索引) in 目标结构"
- v-for="值 in 目标结构"
- 目标结构:
- 可以遍历数组 / 对象 / 数字 / 字符串 (可遍历结构)
- 注意: v-for的临时变量名不能用到v-for范围外
想要谁循环就放到谁身上
# 解决v-for更新
覆盖原数组
# 更新某个值
this.$set(目标结构,位置,值)
12. 动态class
目标: 用v-bind给标签class设置动态的值
- 语法:
- :class="{类名: 布尔值}"
13.动态style
目标: 给标签动态设置style的值
- 语法
- :style="{css属性: 值}"
14.vue 过滤器 -定义使用
目的: : 转换格式, 过滤器就是一个函数, 传入值返回处理后的值
过滤器只能用在插值表达式和v-bind表达式
可以传参和多用,{msg |过滤器1(参数)|过滤器2(参数)}
语法:
- 全局: Vue.filter("过滤器名", (值,参数) => {return "返回处理后的值"})
- 局部: filters: {过滤器名字: (值) => {return "返回处理后的值"}
15_vue计算属性-computed
目标: 一个数据, 依赖另外一些数据计算而来的结果
#1. 普通写法
computed: {
"计算属性名" () {
return "值"
}
}
#2.完整写法
computed: {
"属性名": {
set(值){}
get() {return "值"}
}
16_vue侦听器-watch
目标: 可以侦听data/computed属性值改变 语法:
watch: { "被侦听的属性名" (newVal, oldVal){ } }
17_vue侦听器-深度侦听和立即执行
目标: 侦听复杂类型, 或者立即执行侦听函数
语法:
watch: {
"要侦听的属性名": {
immediate: true, // 立即执行
deep: true, // 深度侦听复杂类型内变化
handler (newVal, oldVal) {
}
}
}