亚洲精品亚洲人成在线观看麻豆,在线欧美视频一区,亚洲国产精品一区二区动图,色综合久久丁香婷婷

              當(dāng)前位置:首頁 > IT技術(shù) > 微信平臺 > 正文

              小程序tab頁無法傳遞參數(shù)的方法
              2021-07-28 10:42:43

              小程序不支持tab頁面?zhèn)鬟fqueryString參數(shù),無論是navigator,還是通過api跳轉(zhuǎn)

              在跳轉(zhuǎn)時通過在點(diǎn)擊事件中設(shè)置本地存儲后在另一個頁面獲取不到的問題

              通過wx.getStorage()獲取不到數(shù)據(jù),遂改為了wx.getStorageSync()此種方式在開發(fā)者工具上可以獲取到,但是發(fā)現(xiàn)在部分android機(jī)型上無法獲取,猜測是因?yàn)閚avigator跳轉(zhuǎn)時可能并沒有立即存儲數(shù)據(jù),導(dǎo)致另一邊獲取不到,于是改成了將數(shù)據(jù)保存為全局變量,而不是本地存儲,然而,此種方法還是有問題,在真機(jī)上部分機(jī)型會出現(xiàn)"OnWebviewEvent: goPage, WebViewId xxxxxxxxx not found"警告,猜測是navigator組件的問題

              解決方案

              模擬實(shí)驗(yàn),一個跳轉(zhuǎn)支付的頁面。輸入金額,然后跳轉(zhuǎn)到支付tabBar
              設(shè)置全局變量去解決

              <!--index.wxml-->
              <view>
              <input  style="border:1px solid red" placeholder="請輸入金額" bindinput="moneyInput" ></input>
              </view>
              <button bindtap="pay">馬上去支付</button> 
              
              //index.js
              //獲取應(yīng)用實(shí)例
              const app = getApp()
              Page({
              
                data :{
                  money:0
                },
              
                // 輸入金額input綁定事件,設(shè)置本地變量money的值
                moneyInput : function(e){
                  this.setData({money:e.detail.value});
                },
                // 支付
                pay:function(){
                  app.global_data.money = this.data.money;//比如輸入表單中的金額,然后跳轉(zhuǎn)到支付頁面
                  if(app.global_data.money>0){
                    wx.switchTab({
                      url: '/pages/list/list',
                    })
                  }else{
                    wx.showModal({
                      title: '提示',
                      content: '金額必須大于0',
                    })
                  }
                  
                }
              
              
              })
              
              
              
              // pages/list/list.js
              const app = getApp();
              Page({
              
                /**
                 * 頁面的初始數(shù)據(jù)
                 */
                data: {
                 
                },
              
                /**
                 * 生命周期函數(shù)--監(jiān)聽頁面顯示
                 */
                onShow: function () {
                  // 獲取全局變量的值
                  console.log(app.global_data.money);// 這里可以在控制臺輸出之前頁面輸入的金額的值,間接的方式進(jìn)行參數(shù)傳遞
                
                }
              })
              

              app.json

               "tabBar": {
                  "list": [{
                    "pagePath": "pages/index/index",
                    "text": "huangbaokang"
                  },
                  {
                    "pagePath": "pages/list/list",
                    "text": "支付中心"
                  }
                  ]
                },
              

              頁面效果:
              小程序tab頁無法傳遞參數(shù)的方法_程序員
              小程序tab頁無法傳遞參數(shù)的方法_程序員_02

              注意點(diǎn):

              在接收數(shù)據(jù)的onShow中接收,如果寫在onLoad中,在跳轉(zhuǎn)的時候不應(yīng)該用wx.switchTab跳轉(zhuǎn),而應(yīng)該用wx.reLaunch跳轉(zhuǎn),因?yàn)槿绻D(zhuǎn)的頁面以前已經(jīng)被打開了,用switchTab并不會重新渲染頁面,只會把頁面棧中的這個頁面重新顯示出來

              ?

              本文摘自 :https://blog.51cto.com/u

              開通會員,享受整站包年服務(wù)立即開通 >