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'});
}
})