云开发在做订单信息查询的页面,页面间的传值采用缓存传值的方式,如下面代码所示。但是在传值时遇到了问题:第一次查询时查询到4条信息,传至B页面时也是4条;第二次查询是20条信息,传至B页面还是第一次查询的4条;第三次查询是19条,传至B页面的还是第一次查询的4条。以上第二次和第三次查询都是在模拟器页面直接点击左上角的“<”后退返回的查询页面。第四次查询使用了control+R刷新了一下,结果查询的结果是4条,但传的值确实第三次的19条信息。因此感觉是1、第一次的缓存一直存在,没有被每次的wx.setStorageSync覆盖。2、control+r刷新了,上一次的值传了过来。3、传值始终慢了一步,除非第一次传值。
第一次查询:第二次查询(页面后退):
第三次查询(页面后退):
第四次查询(control+r刷新):
另外:设置了清楚缓存按钮,也起不到作用。
求解。
缓存传值方式:
/* A页面**/ wx.setStorageSync('searchlist', searchdata)/* B页面**/var searchstorage = wx.getStorageSync('searchlist'); |
查询页面js:
clearstorage: function (e) { wx.clearStorageSync() console.log("是否清楚了缓存",aaa) },formSubmit: function (e) { console.log('form发生了submit事件,携带数据为:', e.detail.value) var city = e.detail.value.city; var name = e.detail.value.name; var operationStartDate = e.detail.value.operationstartdate; var operationEndDate = e.detail.value.operationenddate; var inputStartDate = e.detail.value.inputstartdate +' '+ '00:00:00'; var inputEndDate = e.detail.value.inputenddate + ' ' + '23:59:59'; var phone = e.detail.value.phone; var ccc = e.detail.value.aaa console.log('输入输出时间', inputStartDate, inputEndDate) if (ccc == false) { console.log(' 不搜索', ccc), wx.getUserInfo({ success(res) { var nickname = res.userInfo.nickName; const _ = db.command db.collection('orderlist').where(_.and([ { name: _.eq(name) }, { phone: _.eq(phone) }, { inputtime: _.gte(inputStartDate).and(_.lte(inputEndDate)) }, ])) .get({ success(res) { var searchdata = res.data; wx.setStorageSync('searchlist', searchdata) console.log('searchlist是', searchdata) wx.navigateTo({ url: '/pages/searchlist/searchlist', })
|
显示页面js:
// miniprogram/pages/searchlist.jsvar searchstorage = wx.getStorageSync('searchlist');Page({ data: { listData: searchstorage }, onLoad: function (options) { console.log('显示界面是否收到缓存', searchstorage) }, |
