临近期末 准备复习 长篇。
1. Vue—事件
1.1 鼠标点击事件
html:
1 |
|
vue:
1 | new Vue({ |
v-on
表示监听DOM事件,并且在触发时运行一些js代码,比如上面代码中v-on
一个鼠标单击事件(click),并且会触发vue中相应的方法(add和sub)。调用方法格式为v-on:事件="方法名"
。方法名也可以加括号,在没有传参的情况下括号可以参略,但需要传参时要在括号内有相应的参数,比如:
html:
1 |
|
vue:
1 | new Vue({ |
1.2 鼠标移动事件
html:
1 |
|
vue:
1 | new Vue({ |
实现一个鼠标位置确定,监听一个鼠标移动的值,然后在console.log()
中查找到坐标的参数,然后赋值给x和y。
event是一个特殊变量,表示访问原始DOM事件
官方文档:
有时也需要在内联语句处理器中访问原始的 DOM 事件。可以用特殊变量
$event
把它传入方法
Vue—事件修饰符
官方文档:
在事件处理程序中调用 event.preventDefault()
或 event.stopPropagation()
是非常常见的需求。尽管我们可以在方法中轻松实现这点,但更好的方式是:方法只有纯粹的数据逻辑,而不是去处理 DOM 事件细节。
为了解决这个问题,Vue.js 为 v-on
提供了事件修饰符。之前提过,修饰符是由点开头的指令后缀来表示的。
.stop
.prevent
.capture
.self
.once
.passive
1 | <!-- 阻止单击事件继续传播 --> |
.once
不像其它只能对原生的 DOM 事件起作用的修饰符,.once
修饰符还能被用到自定义的组件事件上。
鼠标按钮修饰符:
.left
.right
.middle
这些修饰符会限制处理函数仅响应特定的鼠标按钮。
Vue-键盘事件与键值修饰符
官方:
在监听键盘事件时,我们经常需要检查详细的按键。Vue 允许为
v-on
在监听键盘事件时添加按键修饰符
html:
1 |
|
vue:
1 | new Vue({ |
使用v-on监听keyup键入,然后在后面加了一个.enter
修饰符,表示在回车按下时触发name这个方法。
按键修饰符:
为了在必要的情况下支持旧浏览器,Vue 提供了绝大多数常用的按键码的别名:
.enter
.tab
.delete
(捕获“删除”和“退格”键).esc
.space
.up
.down
.left
.right
Vue-双向数据绑定
双向数据绑定一定是和 表单中<input>
、<textarea>
及 <select>
元素有关的操作
官方文档:
你可以用
v-model
指令在表单<input>
、<textarea>
及<select>
元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但v-model
本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。
v-model
会忽略所有表单元素的value
、checked
、selected
特性的初始值而总是将 Vue 实例的数据作为数据来源。你应该通过 JavaScript 在组件的data
选项中声明初始值。
v-model
在内部为不同的输入元素使用不同的属性并抛出不同的事件:
- text 和 textarea 元素使用
value
属性和input
事件;- checkbox 和 radio 使用
checked
属性和change
事件;- select 字段将
value
作为 prop 并将change
作为事件。对于需要使用输入法 (如中文、日文、韩文等) 的语言,你会发现
v-model
不会在输入法组合文字过程中得到更新。如果你也想处理这个过程,请使用input
事件。
简单来说,就是使用v-model
可以直接实现双向数据绑定,不需要调用方法,直接从data
中先绑定数据,如果先前data
中已经有数据,那会直接出现在输入框中。
html:
1 |
|
vue:
1 | new Vue({ |
Vue-Computde 计算属性
计算属性将白了就是在当处理大量数据或搜索时,需要改变大量的数据,才会使用计算属性,因为当methods执行函数,如果其内的数值发生改变,不管与它有没有瓜系,它都会执行一遍改函数,造成性能上的问题。计算属性很好的优化了这一问题,当有数据改变时,不会影响其他方法函数的调用。
官方:
模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。例如:
1
2
3
4 ><div id="example">
> {{ message.split('').reverse().join('') }}
></div>
>
在这个地方,模板不再是简单的声明式逻辑。你必须看一段时间才能意识到,这里是想要显示变量
message
的翻转字符串。当你想要在模板中多次引用此处的翻转字符串时,就会更加难以处理。所以,对于任何复杂逻辑,你都应当使用计算属性。
基础例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 ><div id="example">
> <p>Original message: "{{ message }}"</p>
> <p>Computed reversed message: "{{ reversedMessage }}"</p>
></div>
>var vm = new Vue({
> el: '#example',
> data: {
> message: 'Hello'
> },
> computed: {
> // 计算属性的 getter
> reversedMessage: function () {
> // `this` 指向 vm 实例
> return this.message.split('').reverse().join('')
> }
> }
>})
>
结果:
Original message: “Hello”
Computed reversed message: “olleH”
这个可以暂时忽略