/**
* 生命周期函数--监听页面加载
*/onLoad: function (options) {
var that = thislet 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 = thislet 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
})
}
})
},
getCurrentPages拿到对应页面,不知道是不是有a,可以在通过传递参数或者存缓存标志位判断
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 }) } }) },
这样在C页面操作完后写就能 操作A页面的testFn方法
const pages = getCurrentPages(); let lastPage = pages[pages.length - 3]; // -1 是当前页面c -2 是上一页B -3是上上一页A lastPage.testFn(); //这里就是 lastPage 相当于A页面的this
--↓↓👍点赞是回答的动力哦
1.将方法封装成模块调用
2.直接复制A页面的的方法
--↓↓👍点赞是回答的动力哦
const pages = getCurrentPages();
然后找出C页面的index,直接调用里面的方法
1、getCurrentPages拿到对应页面进行操作
2、在C页面将要做的事情放到app.js(也可以是别的全局的js)里,然后A页面onShow的时候执行
加层判断,route里面判断是不是A页面,或者看是否有专门的回调方法。如下:
var pages = getCurrentPages();
var currPage = pages[pages.length - 2];
if (currPage && currPage.callback && typeof currPage.callback == "function") {
currPage.callback({
});
}
C触发B,B再触发A就可以了。