EventChannel

页面间事件通信通道

方法

EventChannel.emit(String eventName, Any ...args)

触发一个事件

参数
参数 类型 默认值 必填 说明
eventName String 事件名称
args Any 事件参数,param1, param2, ..., paramN 作为参数。

EventChannel.on(String eventName, Function callback)

持续监听一个事件

参数
参数 类型 默认值 必填 说明
eventName String 事件名称
callback Function 事件回调函数。参数为 EventChannel.emit 传入的事件参数参数

EventChannel.once(String eventName, Function callback)

监听一个事件一次,触发后失效

参数
参数 类型 默认值 必填 说明
eventName String 事件名称
callback Function 事件回调函数。参数为 EventChannel.emit 传入的事件参数参数

EventChannel.off(String eventName, Function callback)

取消监听一个事件。

参数
参数 类型 默认值 必填 说明
eventName String 事件名称
callback Function 需要取消的监听函数。不传此参数,将取消所有监听函数。

示例代码:

//PageA.js
mc.navigateTo({
    url: './eventChannel/eventChannel',
    events: {
        'fromPageB' : function(param1){
            console.log('fromPageB', param1);
        }
    },
    success: function(res){
        setInterval(function(res){
            var data = '我是PageA, 触发次数' + new Date().getTime();
            res.eventChannel.emit('fromPageA', data, '自定义参数2');
            res.eventChannel.emit('fromPageAOnce', data, '自定义参数2');
            i = i + 1;
        }, 1000, res);
    }
})
//PageB.js
Page({
  onLoad: function(option){
    var channel = this.getOpenerEventChannel();

    channel.on('fromPageA', function(param1, param2){
        console.log('fromPageA', param1, param2)
    });
    channel.once('fromPageAOnce', function(param1, param2){
        //只执行一次
        console.log('fromPageAOnce', param1, param2)
    });
    //触发PageA中的 fromPageB 事件
    channel.emit('fromPageB', {data: 'test'});
  }
})

results matching ""

    No results matching ""

    results matching ""

      No results matching ""