您好!很高兴能为您解答, 在微信小程序中,数据缓存其实就和localstorage 的原理差不多,所以理解起来并不难。下面我们来一起实现一下。
效果图展示:
我们在index页面存入数字11,然后在跳转到新页面,在将缓存中的11取出渲染到当前页面。具体代码如下:
index页面:
<span style="font-size:24px;">
<view class="btn-area">
<navigator url="/navigator/navigatortitle=我是navi">跳转到新的页面post情求</navigator>
<navigator url="/redirect/redirecttitle=我是red" redirect>跳转到当前页面</navigator>
</view>
</span>
<view>
<input style="border:2rpx solid red" placeholder="输入信息" bindinput="getInput" />
<button style="border:2rpx solid yellow" bindtap="saveInput">存入</button>
</view>1234567891012345678910
index的js:
//indexjs
//获取应用实例
var app = getApp()
Page({
data: {
storage:''
},
onLoad: function () {
var that = this
//获取输入值
getInput:function(e){
thissetData({
storage:edetailvalue
})
},
//存储输入值
saveInput:function(){
wxsetStorageSync('storage', thisdatastorage)
}
})
12345678910111213141516171819202122231234567891011121314151617181920212223
跳转页面:
<view>从存储中得到的数据:{{storage}}</view>11
跳转页面的js:
var app = getApp();
var that;
Page( {
data: {
storage:''
},
onLoad: function(options) {
that = this;
//获取存储信息
wxgetStorage({
key: 'storage',
success: function(res){
// success
thatsetData({
storage:resdata
})
}
})
}
})
原因:queryget 方法是异步的(小程序的请求方法基本都是异步执行),所以程序会先执行updatePostData();方法 。而此时数据detail并未绑定数据,所以自然拿不到前面设定的值
解决方案:
在queryget执行完毕后的回调函数调用updatePostData()方法
使用fetchthen
问题应该是出在this,程序运行到这里,this的指向很可能已经发生了改变(这是js众所周知的毛病,除非你改用ES6的新式写法),不再是当前Page了,所以thisdata就出错了,自然而然thisdatadeviceId也无效了。正确的做法是在函数的开头把this赋值给另一个变量,比如 var _this=this,或者 var that=this,然后函数后面要用到this的地方就用_this或that代替(比如thatdatadeviceId)
您好,可以这样设置:
function setData(){var that = this;
thatsetData({
smart_cookies_city:'134',
cityname:'南京'
})
}
以上就是关于微信小程序怎么进行数据缓存全部的内容,包括:微信小程序怎么进行数据缓存、微信小程序data数据获取问题、微信小程序传参为null同一个data有的正常有的为null等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)