uni.$emit和$emit的区别
时间: 2023-11-28 13:45:08 浏览: 104
uni.$emit和this.$emit的作用是相同的,都是用于触发自定义事件。它们的区别在于使用场景不同。uni.$emit是在非Vue组件中使用的,而this.$emit是在Vue组件中使用的。在Vue组件中,可以使用this.$emit来触发自定义事件,并且可以在父组件中使用v-on来监听这个事件。而在非Vue组件中,可以使用uni.$emit来触发自定义事件,并且可以在其他非Vue组件中使用uni.$on来监听这个事件。
举个例子,假设我们有两个页面A和B,现在需要在A页面中触发一个自定义事件,并将数据传递给B页面。可以在A页面中使用uni.$emit来触发这个事件,并在B页面中使用uni.$on来监听这个事件并获取数据。
以下是一个示例代码:
在A页面中触发自定义事件并传递数据:
```javascript
uni.$emit('add', {listData: [1, 2, 3]});
```
在B页面中监听自定义事件并获取数据:
```javascript
uni.$on('add', function(res) {
console.log(res.listData); // 输出:[1, 2, 3]
});
```
相关问题
uni.$emit怎么使用
uni.$emit是uni-app框架中的一个事件触发器,用于向父组件或全局事件触发器发送事件。使用方法如下:
在子组件中使用:
```
this.$emit('事件名称',参数);
```
在父组件中使用:
```
this.$refs.子组件名称.$on('事件名称',(数据)=>{
//数据即为子组件传递过来的参数
})
```
全局事件触发器使用:
```
uni.$emit('事件名称', 参数);
或
uni.$on('事件名称', (数据)=>{
//do something
})
```
uni.$emit 和uni.$on
uni.$emit和uni.$on是uni-app框架中用于组件间通信的方法。
uni.$emit是在组件中触发自定义事件的方法。可以通过uni.$emit(eventName, data)来触发一个自定义事件,并且可以传递一些数据。其他组件可以通过uni.$on(eventName, callback)来监听该事件,并在事件触发时执行相应的回调函数。
例如,在组件A中使用uni.$emit触发一个自定义事件:
```javascript
uni.$emit('customEvent', { message: 'Hello' });
```
然后,在组件B中使用uni.$on来监听该事件,并执行回调函数:
```javascript
uni.$on('customEvent', (data) => {
console.log(data.message); // 输出:Hello
});
```
这样,在组件A触发customEvent事件时,组件B就能接收到该事件并执行相应的回调函数。
需要注意的是,使用uni.$emit和uni.$on进行组件间通信时,被监听的组件应该在合适的时机调用uni.$off(eventName)来取消对事件的监听,以避免内存泄漏。
阅读全文