前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >程序化的事件侦听器

程序化的事件侦听器

作者头像
阿超
发布2022-08-17 21:28:02
1.3K0
发布2022-08-17 21:28:02
举报
文章被收录于专栏:快乐阿超快乐阿超

吾心信其可行,则移山填海之难,终有成功之日。——孙中山

vue官方文档——程序化的事件侦听器

vue官方文档——实例方法/事件

我们可以使用this.$onvue中侦听一个事件

代码语言:javascript
复制
vm.$on('test', function (msg) {
  console.log(msg)
})

然后我们可以在其他地方访问它

代码语言:javascript
复制
vm.$emit('test', 'hi')
// => "hi"

例如这里,我在一个页面中使用vm.$on

image-20211115200015722
image-20211115200015722

而在另一处中使用vm.$emit

image-20211115200524101
image-20211115200524101

可以看到成功调用test事件

基于这一点,我们可以在uniapp中进行页面间的通信

uniapp官方文档

也就是说,在其中一个页面中我们使用uni.on或者uni.once,在另一个页面中就可以使用uni.emit进行调用,前提是uni,on或者uni.

uni.$once触发后就会立马移除该监听器,也就是说只能触发一次

而uni.on就只能使用uni.off进行手动移除

比如我这里在index.nvue页面中挂载

image-20211115201214321
image-20211115201214321
代码语言:javascript
复制
<template>
	<view>
		<view>{{ val }}</view>
	</view>
</template>

<script>
export default {
	data() {
		return {
			val: 0
		};
	},
	onLoad() {
		uni.$on('add', this.add);
	},
	methods: {
		add(e) {
			console.log('主页的add被触发了!: ', e);
			this.val += e.data;
		}
	}
};
</script>

然后到list页面中调用

代码语言:javascript
复制
<template>
	<view>
	</view>
</template>

<script>
export default {
	data() {
		return {
		};
	},
	onLoad() {
		setInterval(() => {
			uni.$emit('add', {
				data: 2
			});
		}, 1000);
	},
	methods: {
		
	}
};
</script>

我们进入index页面,再进入list页面触发后,回到index页面就可以看到它的add函数成功触发了每秒加2的效果

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档