8.2 EventChannel

106 阅读1分钟
  1. EventChannel.emit(事件名称, 参数) 触发一个事件。
  • 向被打开页面传送数据。
  • 在多个页面中间建立数据通道。
  • 触发后将参数以对象的形式传给这个事件。
//发送页面
wx.navigateTo({
    url: '',//跳转到这个页面
    events: {
        yyyy: function (data) {
            xxxx
        },
    success: function(res) {
        res.eventChannel.emit('transmissionA',{ data: ''})
    }
});
  1. EventChannel.on(string eventName, EventCallback fn) 持续监听一个事件。
  • 接收页面,监听
onLoad: function (options) {
    // 监听transmissionA事件,获取上一页面通过eventChannel传送到当前页面的数据
    eventChannel.on('transmissionA', function(data) {
    })
}
  1. EventChannel.once(string eventName, EventCallback fn) 监听一个事件一次,触发后失效。
  2. EventChannel.off(string eventName, EventCallback fn) 取消监听一个事件。给出第二个参数时,只取消给出的监听函数,否则取消所有监听函数。

2. 阻止冒泡:

  • <van-button @click.stop="clickTab">我是按钮</view>
  • 在没有 .stop 的情况下,点击事件会从最内层的元素开始向外层元素传播,直到达到文档根节点。如果某个外层元素也有绑定点击事件,那么这个事件也会被触发。但是,加上 .stop 后,点击事件会被立即停止,不会继续向上传播,仅当前绑定 @click.stop 的元素上的事件处理器会被执行。