Vue的基本使用
Vue的基本使用
Vue的指令与过滤器
指令的概念
指令(Directives)是vue为开发者提供的模板语法,用于辅助开发者渲染页面的基本结构。
指令的分类
vue中的指令按照不同的用途可以分为6大类:
- 内容渲染指令
- 属性绑定指定
- 事件绑定指令
- 双向绑定指令
- 条件渲染指令
- 列表渲染指令
指令是vue开发中最基础、最常用、最简单的知识点
内容渲染指令
内容渲染指令用来辅助开发者渲染DOM元素的文本内容。
常用的内容渲染指令有如下3个:
- v-text
- {{}}
- v-html
v-text
会覆盖标签中原有的内容
插值表达式
也就是{{}}
专门又来解决v-text会覆盖默认文本的问题
v-html
如果要把包含html标签的字符串渲染为页面的HTML元素,则需要用到v-html这个指令。
在 vue 提供的模板渲染语法中,除了支持绑定简单的数据值之外,还支持JavaScript表达式的运算。
{{ number + 1 }}
{{ ok ? 'YES' : 'NO' }}
{{ message.split('').reverse().join('') }}
属性绑定指令
插值表达是只能用在内容节点而不能用在属性节点。
如果需要为元素的属性动态绑定属性值,则需要用到v-bind属性绑定指令。
Document
v-bind 可以简写为 :
绑定的内容如果需要拼接,则字符串的外面应该包裹单引号
v-bind会作为js表达式被解析
事件绑定指令
vue 提供了 v-on事件绑定指令,用来辅助程序员为 DOM 元素绑定事件监听。
在methods中定义事件处理函数,格式如下:
methods: {
add: funtion() {
}
}
其简写形式:
methods: {
add() {}
}
在methods方法中,可以使用创建的实例对象(vm或this)来访问数据源。
在绑定事件处理函数的时候,可以使用()传递参数
v-on:可以简写为@
事件对象$event
事件修饰符
在事件处理函数中调用event.preventDefault()或event.stopPropagation()是非常常见的需求。因此,vue提供了时间修饰符的概念,来辅助程序员更方便地对事件的出发进行控制。
| 事件修饰符 | 说明 |
|---|---|
| .prevent | 阻止默认行为 |
| .stop | 阻止事件冒泡 |
| .capture | 以捕获模式出发当前的事件处理函数 |
| .once | 绑定的事件只触发一次 |
| .self | 只有在event.target是当前元素自身是出发事件处理函数 |
按键修饰符
在监听键盘事件时,我们经常需要判断详细的按键。此时,可以为键盘相关的事件添加按键修饰符。
双向数据绑定指令
vue提供了v-model双向数据绑定指令,用来辅助开发者不操作DOM的前提下,快速获取表单的数据。
v-model只能和一些表单元素使用才有意义
事件绑定指令
用户名:{{username}}
指令修饰符
为了方便对用户输入的内容进行处理,vue为v-model指令提供了3个修饰符,分别是:
| 修饰符 | 作用 | 示例 |
|---|---|---|
| .number | 自动将用户的输入值转为数值类型 | |
| .trim | 自动过滤用户输入的首尾空白字符 | |
| .lazy | 在”change“时而非”input“时更新 |
v-model的修饰符
.number
+ = {{num1 + num2}}
.trim
.lazy
data不会实时改变,当输入框失去焦点时,数据同步
条件渲染指令
v-if 会动态添加或删除元素
v-show 使用display: none来隐藏元素
v-if的配套指令
- v-else-if
- v-else
v-model的修饰符
v-if和v-show的区别
v-if 的条件渲染
v-show 的条件渲染
v-if的配套语法
优秀
良好
一般
差
列表渲染指令
vue提供了v-for列表渲染指令,用来辅助开发者基于一个数组来循环渲染一个列表结构。
v-for指令需要使用item in items形式的特殊语法
v-model的修饰符
序号
id
姓名
{{index + 1}}
{{item.id}}
{{item.name}}
官方简易:只要用到了v-for指令,那么一定要绑定一个:key属性。而且,尽量把id作为key的值。官方对key的值类型也是有要求的,只能是字符串或者数字类型。
过滤器
过滤器(Filters)是Vue为开发者提供的功能,常用于文本的格式化。过滤器可以用在两个地方:插值表达式和v-bind属性绑定
过滤器应该在JavaScript表达式的尾部,由“管道符”进行调用
私有过滤器
一般定义的,在filters节点下定义的过滤器都为私有过滤器
公有过滤器
独立于每个vm实例之外
Vue.filter()方法接收两个参数:
- 全局过滤器的名字
- 全局过滤器的处理函数
如果全局过滤器和私有过滤器名字重复,则按照就近原则,优先使用私有过滤器
连续调用多个过滤器
过滤器可以连续调用多个
过滤器传参
{{message | filterA(arg1, arg2)}}
Vue.filter('filterA', (msg, arg1, arg2) => {
// 过滤器代码逻辑
})
v-model的修饰符
过滤器
原字符串:{{message}}
过滤后的字符串:{{message | capitalize}}
公有过滤器
原字符串:{{ message }}
过滤后的字符串:{{message | capitalize}}