# uni.$on(eventName, callback)

监听自定义事件。事件可以由 uni.$emit 触发。回调函数会接收 uni.$emit 传递的参数。

# # Parameters

name type required default description
eventName string YES - -
callback () => void YES - -

# # See also

$on

Related Bug

# uni.$off(eventName, callback)

移除自定义事件监听器。如果没有指定事件名,则移除所有事件监听器。如果提供事件名,则移除该事件的所有监听器。如果提供了事件名和回调,则只移除这个回调的监听器。

# # Parameters

name type required default description
eventName string YES - -
callback () => void YES - -

# # See also

$off

Related Bug

# uni.$once(eventName, callback)

监听一个自定义事件。事件只触发一次,在第一次触发之后移除事件监听器。

# # Parameters

name type required default description
eventName string YES - -
callback () => void YES - -

# # See also

$once

Related Bug

# uni.$emit(eventName, args?)

触发自定义事件,附加的参数会传递给事件监听器。

# # Parameters

name type required default description
eventName string YES - -
args any NO - -

# # See also

$emit

Related Bug

# # Example

hello uni-app x

<template>
 <!-- #ifdef APP -->
 <scroll-view style="flex: 1">
   <!-- #endif -->
   <view>
     <button @click="on">开始监听</button>
     <button @click="once">监听一次</button>
     <button @click="off">取消监听</button>
     <button @click="emit">触发监听</button>
     <button @click="clear">清空消息</button>
     <view class="box">
       <view>收到的消息:</view>
       <view>
         <view v-for="(item, index) in log" :key="index">{{ item }}</view>
       </view>
     </view>
   </view>
   <!-- #ifdef APP -->
 </scroll-view>
 <!-- #endif -->
</template>

<script lang="uts">
export default {
 data() {
   return {
     log: [] as string[],
   }
 },
 methods: {
   fn(res: string) {
     this.log.push(res)
   },
   on() {
     uni.$on('test', this.fn)
   },
   once() {
     uni.$once('test', this.fn)
   },
   off() {
     uni.$off('test', this.fn)
   },
   emit() {
     uni.$emit('test', 'msg:' + Date.now())
   },
   clear() {
     this.log.length = 0
   },
 },
}
</script>

<style>
.box {
 padding: 10px;
}
</style>

# # General type

# # GeneralCallbackResult

name type optinal default description
errMsg string YES - 错误信息