vue实例事件

$on, $once, $off, $emit

vue有实例属性,实例方法,实例事件。本文讲实例事件。

$on (在构造器外部添加事件)

$on接收两个参数,第一个参数是调用时的事件名称,第二个参数是一个匿名方法

1
2
3
4
app.$on('reduce', function(){
console.log('执行了reduce()')
this.count--
})

$once (执行一次的事件)

1
2
3
4
app.$once('reduceOnce', function(){
console.log('只执行一次')
this.count--
})

$off (关闭事件)

1
2
3
4
function off(){
console.log('关闭事件')
app.$off('reduce')
}

$emit (事件调用)

1
2
3
4
function reduce(){
console.log('事件调用')
app.$emit('reduce')
}

完整示例代码

http-server访问,看控制台输出,帮助理解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue入门之Helloworld</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<div>数字:{{count}}</div>
<button onclick="reduce()">on调用</button>
<button onclick="reduceOnce()">once调用</button>
<button onclick="off()">off调用</button>
</div>

<script type="text/javascript">
var app = new Vue({
el:'#app',
data:{
count: 1
}
})
// $on 在构造器外部添加事件
app.$on('reduce',function(){
console.log('执行了reduce()');
this.count--;
});
// 调用
function reduce() {
// 事件调用
console.log('emit事件调用');
app.$emit('reduce');
}

// $once执行一次的事件
app.$once('reduceOnce',function(){
console.log('只执行一次的方法');
this.count--;
});
// 调用
function reduceOnce() {
app.$emit('reduceOnce');
}

// 关闭事件
function off(){
console.log('关闭事件');
app.$off('reduce');
}
</script>
</body>
</html>

参考教程