赞
踩
页面栈适用于同一个tabbar里面的页面间跳转的情况,比如从A页面跳到B页面,B页面函数执行完毕,想要改变A页面数据的值,小程序中页面栈最多十层。
代码如下
// A页面,可以通过路由跳转到B页面,A和B要在一个tabbar里 page({ data:{ number: 1 // A页面有个数据值为1 } }) ------------------------------------ // B页面 page({ // B页面的函数 changeNumber(){ var pages = getCurrentPages() // 获取页面栈 var prevPage = pages[pages.length - 2]; //上一个页面即A页面,通过减法可以定义到A的上级页面 // 改变A页面的值,prevPage相当于A的this prevPage.setData({ number: 2 }) wx.navigateBack() } })
url传参适用于同一个tabbar里面的页面间跳转的情况,比如从A页面跳到B页面,需要把A页面的值传到B页面供B页面使用
// A页面,可以通过路由跳转到B页面,A和B要在一个tabbar里 page({ data:{ number: 1 // A页面有个数据值为1 }, // 跳转到B页面的函数 toBpage(){ var value = this.data.number // 获得data里的数据 var infoStr = JSON.stringify(value) // 将数据转化为json数据 // 跳转时在正常路径'/pages/B/B'后面加上'?',后面接上数据的名称,这里为infoStr,等号后面接上数据 wx.navigateTo({ url: '/pages/B/B?infoStr=' + infoStr, }) } }) ------------------------------------ // B页面 page({ onLoad(options) { var infoStr = options.infoStr // 接收A页面传来的数据 var info = JSON.parse(infoStr) // 将数据转化为原来格式 console.log(info) }, })
EventChannel通道通信适用于同一个tabbar里面的页面间跳转的情况,比如从A页面跳到B页面,需要把A页面的值传到B页面供B页面使用,必须搭配 wx.navigateTo() 函数使用
代码如下
// A页面 page({ data:{ number: 1 // A页面有个数据值为1 }, // 跳转B页面的函数 toBpage() { var value = this.data.number wx.navigateTo({ url: '/pages/B/B', success: function (res) { // 通过eventChannel向被打开页面传送数据 res.eventChannel.emit('acceptData', value) } }) }, }) --------------------------------------------------------- // B页面 page({ onLoad(options) { const eventChannel = this.getOpenerEventChannel() // 监听acceptData事件,获取上一页面通过eventChannel传送到当前页面的数据 eventChannel.on('acceptData', (value) => { console.log(value) }) }, })
Storage缓存是把当前页面数据缓存到手机上,然后在其他页面读取缓存使用数据,可以跨tabbar传值,缓存占用硬件内存,最好设置个函数可以清除缓存
代码如下
// A页面 page({ data:{ number: 1 // A页面有个数据值为1 }, // 任意函数 saveDataStorage(){ var value = this.data.number // 获得data里的数据 wx.setStorageSync('key', value) // 数据缓存到设备,名字为key } }) ------------------------------------ // B页面 page({ // 任意函数 getDataStorage() { var value = wx.getStorageSync('key') // 从缓存读取数据 console.log(value) wx.clearStorageSync() // 如果数据以后不用,可以清除缓存 }, })
globaldata全局数据是app.js里的数据,数据是全局的,任意页面都可以读写,可以跨tabbar传值
代码如下
// app.js App({ globalData: { dataInfo: "全局数据" } }) ------------------------------ // A页面写global数据 const app = getApp(); // 需要引入app page({ // 任意函数 changeGlobalData(){ app.globalData.dataInfo = "修改数据" } }) ------------------------------ // B页面读取global数据 const app = getApp(); // 需要引入app page({ // 任意函数 getGlobalData(){ var value = app.globalData.dataInfo } })
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。