微信小程序開發之數據存儲 參數傳遞 數據緩存
微信小程序開發內測一個月.數據傳遞的方式很少.經常遇到頁面銷毀後回傳參數的問題,小程序中並沒有類似Android的startActivityForResult的方法,也沒有類似廣播這樣的通訊方式,更沒有類似eventbus的輪子可用.
現在已知傳遞參數的方法只找到三種,先總結下.由於正處於內測階段,文檔也不是很穩定,經常修改,目前尚沒有人造輪子.
先上GIF:
1.APP.js
我把常用且不會更改的參數放在APP.js的data裏面了.在各個page中都可以拿到var app = getApp();
app上就可以拿到存在data中的參數.
2. wx.navigateTo({})中URL攜帶參數
demo中已經寫出:
wx.navigateTo({
url: "../newpage/newpage?infofromindex=" + this.data.infofromindex,
});
頁面間傳遞參數的筆記
3.wx.setStorage(OBJECT) 數據緩存
微信開發文檔中的數據緩存方法:
①存儲數據
try {
wx.setStorageSync(‘infofrominput‘, this.data.infofrominput)
} catch (e) {
}
②獲取數據
//獲取
wx.getStorage({
key: ‘infofrominput‘,
success: function (res) {
_this.setData({
infofromstorage: res.data,
})
}
})
key是本地緩存中的指定的 key,data是需要存儲的內容.
詳情見微信小程序開發文檔:文檔
貼上代碼:
1.index.js
[javascript] view plain copy
- //index.js
- //獲取應用實例
- var app = getApp()
- Page({
- data: {
- info: app.data.info,
- infofromindex: ‘來自index.js的信息‘,
- infofrominput: ‘‘
- },
- onLoad: function () {
- },
- //跳轉到新頁面
- gotonewpage: function () {
- wx.navigateTo({
- url: "../newpage/newpage?infofromindex=" + this.data.infofromindex,
- });
- },
- //獲取輸入值
- searchInputEvent: function (e) {
- console.log(e.detail.value)
- this.setData({ infofrominput: e.detail.value })
- },
- //保存參數
- saveinput: function () {
- try {
- wx.setStorageSync(‘infofrominput‘, this.data.infofrominput)
- } catch (e) {
- }
- }
- })
2.index.wxml
[html] view plain copy- <!--index.wxml-->
- <view>
- <button style="background-color:#00ff00;margin:20rpx" bindtap="gotonewpage">跳轉</button>
- <input style="background-color:#eee;margin:20rpx;height:80rpx" placeholder="請輸入需要保存的參數" bindinput="searchInputEvent" />
- <button style="background-color:#ff0000;margin:20rpx" bindtap="saveinput">存入Storage</button>
- </view>
3.newpage.js
[javascript] view plain copy
- //newpage.js
- //獲取應用實例
- var app = getApp()
- Page({
- data: {
- infofromapp: app.data.infofromapp,
- infofromindex: ‘‘,
- infofromstorage: ‘‘,
- },
- onLoad: function (options) {
- var _this = this;
- var infofromindex = options.infofromindex;
- this.setData({
- infofromindex: infofromindex
- })
- //獲取
- wx.getStorage({
- key: ‘infofrominput‘,
- success: function (res) {
- _this.setData({
- infofromstorage: res.data,
- })
- }
- })
- }
- })
4.newpage.wxml
[html] view plain copy
- <!--newpage.wxml-->
- <view style="width:100%;margin:30rpx">infofromapp:{{infofromapp}}</view>
- <view style="width:100%;margin:30rpx">infofromindex:{{infofromindex}}</view>
- <view style="width:100%;margin:30rpx">infofromstorage:{{infofromstorage}}</view>
5.app.js
[javascript] view plain copy
- //app.js
- App({
- data: {
- infofromapp: ‘來自APP.js的信息‘
- },
- onLaunch: function () {
- }
- })
微信小程序開發之數據存儲 參數傳遞 數據緩存