1. 程式人生 > >微信小程序開發之數據存儲 參數傳遞 數據緩存

微信小程序開發之數據存儲 參數傳遞 數據緩存

for 小程序開發 goto rom tle margin fill alt start

微信小程序開發內測一個月.數據傳遞的方式很少.經常遇到頁面銷毀後回傳參數的問題,小程序中並沒有類似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
  1. //index.js
  2. //獲取應用實例
  3. var app = getApp()
  4. Page({
  5. data: {
  6. info: app.data.info,
  7. infofromindex: ‘來自index.js的信息‘,
  8. infofrominput: ‘‘
  9. },
  10. onLoad: function () {
  11. },
  12. //跳轉到新頁面
  13. gotonewpage: function () {
  14. wx.navigateTo({
  15. url: "../newpage/newpage?infofromindex=" + this.data.infofromindex,
  16. });
  17. },
  18. //獲取輸入值
  19. searchInputEvent: function (e) {
  20. console.log(e.detail.value)
  21. this.setData({ infofrominput: e.detail.value })
  22. },
  23. //保存參數
  24. saveinput: function () {
  25. try {
  26. wx.setStorageSync(‘infofrominput‘, this.data.infofrominput)
  27. } catch (e) {
  28. }
  29. }
  30. })

2.index.wxml

[html] view plain copy
  1. <!--index.wxml-->
  2. <view>
  3. <button style="background-color:#00ff00;margin:20rpx" bindtap="gotonewpage">跳轉</button>
  4. <input style="background-color:#eee;margin:20rpx;height:80rpx" placeholder="請輸入需要保存的參數" bindinput="searchInputEvent" />
  5. <button style="background-color:#ff0000;margin:20rpx" bindtap="saveinput">存入Storage</button>
  6. </view>

3.newpage.js

[javascript] view plain copy
  1. //newpage.js
  2. //獲取應用實例
  3. var app = getApp()
  4. Page({
  5. data: {
  6. infofromapp: app.data.infofromapp,
  7. infofromindex: ‘‘,
  8. infofromstorage: ‘‘,
  9. },
  10. onLoad: function (options) {
  11. var _this = this;
  12. var infofromindex = options.infofromindex;
  13. this.setData({
  14. infofromindex: infofromindex
  15. })
  16. //獲取
  17. wx.getStorage({
  18. key: ‘infofrominput‘,
  19. success: function (res) {
  20. _this.setData({
  21. infofromstorage: res.data,
  22. })
  23. }
  24. })
  25. }
  26. })

4.newpage.wxml

[html] view plain copy
  1. <!--newpage.wxml-->
  2. <view style="width:100%;margin:30rpx">infofromapp:{{infofromapp}}</view>
  3. <view style="width:100%;margin:30rpx">infofromindex:{{infofromindex}}</view>
  4. <view style="width:100%;margin:30rpx">infofromstorage:{{infofromstorage}}</view>

5.app.js

[javascript] view plain copy
  1. //app.js
  2. App({
  3. data: {
  4. infofromapp: ‘來自APP.js的信息‘
  5. },
  6. onLaunch: function () {
  7. }
  8. })

微信小程序開發之數據存儲 參數傳遞 數據緩存