1、第二个页面给第一个页面的属性赋值,且运行第一页的方法
实现的逻辑:从第一页index跳到第二页index2,然后在第二页里给第一页属性赋值和运行第一页里面的方法
代码的结构:
common.js的代码为:
// 只为调用其他页面的方法时使用
export function getPageByRoute(pageRoute) {
if (pageRoute.indexOf('/pages') === 0) {
pageRoute = pageRoute.slice(1)
}
const result = {
page: null,
pageIndex: -1,
pageCount: -1
}
const pages = getCurrentPages()
for (let i = 0; i < pages.length; i++) {
if (pages[i].route.indexOf(pageRoute) > -1) {
result.page = pages[i]
result.pageIndex = i,
result.pageCount = pages.length - 1
break;
}
}
return result
}
index里面有属性orderId和方法openCell
data: {
orderId:'00'
},
openCell(e) {
console.log("输出:==",this.data.orderId)
},
index2.js的onload方法
需要导入:import * as common from ‘…/utils/common’
//调用第一个页面的方法和设置第一个方法的属性
const target = common.getPageByRoute('/index')
const page = target.page
page.setData({
orderId: 123,
})
page.openCell()
//调用第一个页面的方法 缩略的写法为:
common.getPageByRoute('/index').page.openCell()
2、第二个页面传值给第一个页面
第一个页面index
wx.navigateTo({
url: '../index1/index1',
events: {
// 监听器:接收被打开页面传送到当前页面的acceptDataFromOpenedPage数据
acceptDataFromOpenedPage: function(data) {
console.log("我在index==accept**=>",data)
},
// 监听器:接收被打开页面传送到当前页面的someEvent数据
someEvent: function(data) {
console.log("我在index****someEvent",data)
}
},
success: function(res) {
// 通过eventChannel向被打开页面传送数据
res.eventChannel.emit('acceptDataFromOpenerPage', { data: '我是index里得test' })
}
})
第二个页面index1
const eventChannel = this.getOpenerEventChannel()
// 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
eventChannel.on('acceptDataFromOpenerPage', function (data) {
console.log("收到index页面传来得值:", data)
})
// 传值给上一个页面
eventChannel.emit('acceptDataFromOpenedPage', {
data: '我是index1里得aa'
});
// 传值给上一个页面
eventChannel.emit('someEvent', {
data: '我是index1里得bb'
}); //
运行代码后输出:
收到index页面传来得值: {data: "我是index里得test"}
我在index==accept**=> {data: "我是index1里得aa"}
我在index****someEvent {data: "我是index1里得bb"}