多个页面间事件怎么传递呢?
现在有个需求A页面打开B页面,B页面打开C页面,
C页面操作完后触发A页面的方法。
小程序的EventChannel好像行不通,那还有什么方法可以实现这种需求吗。。求各位大大赐教。
6 回复
这样在C页面操作完后写就能 操作A页面的testFn方法
const pages = getCurrentPages();
let lastPage = pages[pages.length - 3]; // -1 是当前页面c -2 是上一页B -3是上上一页A
lastPage.testFn(); //这里就是 lastPage 相当于A页面的this
--↓↓👍点赞是回答的动力哦
EventChannel可以的
c.js
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var that = this
let eventChannel = this.getOpenerEventChannel();
eventChannel.on('acceptDataFromOpenerPage', function (data) {
if (data) {
data.data.afunc() //触发 A页面方法
}
})
},
b.js
goc(){
var that = this
wx.navigateTo({
url: './c',
success: function (res) {
res.eventChannel.emit('acceptDataFromOpenerPage', {
data: that.data.dataa
})
}
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var that = this
let eventChannel = this.getOpenerEventChannel();
eventChannel.on('acceptDataFromOpenerPage', function (data) {
if (data) {
that.setData({dataa :data.data})
}
})
},
a.js
afunc(){
console.log('ok')
},
gob(){
var that = this
wx.navigateTo({
url: './b',
success: function (res) {
res.eventChannel.emit('acceptDataFromOpenerPage', {
data: that
})
}
})
},