mpvue開發微信小程序:數據存儲、傳值、取值

小程序界面傳值
父級界面:A界面 
子級界面:B界面

一、url傳值


詳細的配置參數可以查看組件導航:navigator,這裏不再做過多的解釋。 
1. 正向傳值:A界面 –>B界面

用 navigator標籤或 wx.navigator傳值,A界面向B界面傳id值

A界面獲取id值傳向B界面如果需要傳多個參數, 用 & 鏈接即可

    // 方法一:navigator標籤傳值
   

<navigator url="/page/index/index?id=110" >傳值</navigator>
    <navigator url="/page/index/index?id=110&username=jane&password=123456" >傳值</navigator>

    // 方法二: wx.navigator標籤傳值單值、多值傳遞
   

 wx.navigateTo({
      url: '/page/index/index?id=' + id
    })

    wx.navigateTo({
      url: '/page/index/index?id=' + id +'&username='+ username+'&password='+ password
    })


B界面接受id值

 

 /**
  * 生命週期函數--監聽頁面加載
  */
  onLoad: function (options) {
    var id = options.id;
    this.setData({
      id:id,
      username:username,
      password:password,
    })
  },



反向傳值:B界面 –>A界面
在B界面需要傳值地方代碼如下

   

var pages = getCurrentPages() // 獲取棧中全部界面的, 然後把數據寫入相應界面
    var currentPage  = pages[pages.length - 1]  //當前界面
    var prePage = pages[pages.length - 2]  //上一個界面
    var that = this
    prePage.setData({
     id: that.data.id,
    })



在A界面需要接受B界面傳過來值碼如下:這裏要在onShow方法裏面重新調用你的數據請求或是,爲了驗證是否傳值成功,你可以打印驗證 注:由於你從B界面返回A界面使用了wx.navigateBack,所以當你回到A界面後onLoad、onReady方法不響應,onShow方法響應,所以這裏你需要特別注意--生命週期

   

 /**
    * 生命週期函數--監聽頁面顯示
    */
    onShow: function () {
      //獲取數據 
      this.gainData() 
      // 打印你的傳值
      console.log("res==", this.data.res)
    },


 


二、本地儲存 tips:本地數據存儲的大小限制爲 10MB


每個微信小程序都可能用到本地緩存數據,這裏我們可以通過調用微信提供的方法:wx.setStorage、wx.setStorageSync、wx.getStorage、wx.getStorageSync、wx.clearStorage、wx.clearStorageSync、實現對數據本地緩存、獲取、清除。可參考微信小程序【數據緩存】開發文檔,查看詳情。

在A界面獲取數據並緩存到本地

wx.setStorageSync('user_info', dic);


在B界面獲取數據並緩存到本地

   

 var user_info = wx.getStorageSync("user_info")
     this.setData({
        username: user_info.username
     });



從本地緩存中同步移除指定 key。這裏具體使用同步或是異步需要根據你存儲時的方法,或是同步清理本地數據緩存wx.clearStorageSync()

     

wx.removeStorageSync("user_info")


同理你可以在B界面傳值在A界面取值,只不過這裏你需要注意存儲、獲取的順序,先存後取,否則你是拿不到值的。

 

三、全局的app對象


這裏你需要在app.js文件,寫好你要全局使用的數據

       

//用戶數據
        appData: {
            user_info:null,
        }



在你需要賦值的地方引用app,代碼如下:

       

var app = getApp();
        app.appData.user_info = {"username":"jane"};



在你需要取值的地方引用app,代碼如下:

       

 var app = getApp();
        var user_info = app.appData.user_info;
        this.setData({
            username: user_info.username
       });

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章