天天看點

怎麼掌握微信小程式的取值、傳值、資料存儲

小程式界面設定如下

父級頁面:A界面

子級頁面:B界面

異級頁面:C界面

一.本頁面取值(A界面→A界面)

a.例如:input輸入文字擷取到value(鍵盤輸入時觸發)

wxml:

<input type=\'text\' name="userName" maxlength="11" bindinput="userPhoneInput" ></input>      

js:

data: {
    userPhone: \'\',
  },
  //手機号輸入框事件鍵盤輸入時觸發(文字提醒)
  userPhoneInput: function (e) {
    this.setData({
      userPhone: e.detail.value
    })
  },
  //接口取值格式
  onShow: function () {
    .....
    data:{
        UserPhoneNum:that.data.userPhone,
    },
    .....
  },      

b.例如:input不輸入文字擷取到全部的value(鍵盤不輸入時觸發)

wxml:

<form bindsubmit="formSubmit">
        <input type=\'text\' value=\'{{putdata.name}}\' name="companyname" placeholder=\'請輸入你的姓名/公司名稱\'></input>
        <input type=\'text\' value=\'{{putdata.bankName}}\' name="openbank" placeholder=\'請輸入你的開戶行全稱\'></input>
        <button formType="submit">完成</button>
</form>      

注:form表單與button綁定擷取input的内容

js:

//按鈕點選事件
  formSubmit: function (e) {
    var companyname = e.detail.value.companyname;
    var openbank = e.detail.value.openbank;
    //根據name取input的value
    wx.request({
      url: aaaaaa,
      data: {
        name: companyname,
        bankName: openbank,
      },
      header: {
        \'content-type\': \'application/json\',
      },
      success: function (res) {

      },
      fail: function () {

      }
    })
  }      

二.異頁面傳值取值(A界面→B界面,A界面→C界面)

a.url傳值

用 navigator标簽或 wx.navigator傳值,A界面向B界面傳值;(不懂的自行安利小程式api群組件)

wxml:

// navigator标簽傳值
<navigator url="/page/index/index?id=1432&name=qima&password=hj1234" >傳值</navigator>

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

下一個頁面取值方法:

js:

data: {
    id : "" ,
    name : "" ,
    password : "",
  },
onLoad: function (options) {
    var id = options.id;
    var name = options.name;
    var password = options.password;
    this.setData({
      id:id,
      name:name,
      password:password,
    })
},      

一般小程式能不用接口解決的就不要用到接口呈現資料,可以用URL傳值,到下一個頁面取值,然後呈現到頁面即可;

b.資料存儲

附加:小程式list資料點選擷取對應的id,我們可以通過設定item的id來辨別或者通過設定鍵值data-xxxx的方式辨別,

比如:

<view class=\'puttype-list\' wx:for="{{tabitem}}" wx:key="*this" bindtap="choice" data-id="{{item.id}}">
      <view class=\'puttype-list-con\'>
            <text>{{item.text}}</text>
            <view class=\'hint\'></view>
      </view>
</view>      

然後,我們通過,如果是id那麼e.currentTarget.id 即可擷取該元素id。如果是data-id那麼e.currentTarget.dataset.id 即可擷取你自己設定的data-id裡面值。

//釋出類型選擇
  choice: function (e) {
    var id = e.currentTarget.dataset.id;
    console.log(id)
    wx.setStorageSync(\'articleId\', id);
    wx.navigateTo({
      url: \'../put/put\',
    });
  },      

我們會用到小程式的api,通過調用微信提供的方法:wx.setStorage、wx.setStorageSync、wx.getStorage、wx.getStorageSync、wx.clearStorage、wx.clearStorageSync、實作對資料本地緩存、擷取、清除。

js緩存:

我們擷取接口傳回的資料,id,code之類的,我們做全局儲存,命名一個key和内容value;

wx.request({
        url: aaaaa,
        data: {
          UserPhoneNum: \'86//\' + that.data.userPhone,
          Password: that.data.passWd,
          IP: that.data.IP,
        },
        header: {
          \'content-type\': \'application/json\',
        },
        success: function (res) {
          console.log(res.data),
          //存儲格式 wx.setStorageSync(\'key命名\', value内容);
          wx.setStorageSync(\'salemanId\', res.data.salemanId);
          wx.setStorageSync(\'salemanLevel\', res.data.salemanLevel);
          if (res.data.state == 200){
            
          }else{
           
          }
        },
 })      

js擷取:

根據key擷取到資料,緩存到本地或上傳到接口;

//根據key擷取到緩存的值
var salemanId= wx.getStorageSync("salemanId");      

js清除:

從本地緩存中同步移除指定 key。這裡具體使用同步或是異步需要根據你存儲時的方法,或是同步清理本地資料緩存;

//清除資料
wx.removeStorageSync("salemanId")      

檢視自己緩存資料地點:(如圖)

怎麼掌握微信小程式的取值、傳值、資料存儲

c.全局App對象

在我們的app.js檔案裡面,我們需要寫好我們需要全局使用的資料;

//使用者學校資料
 globalData: {
     school:null,
 }      

我們需要給它指派,指派代碼如下:

var self = this
......
self.globalData.school = res.data.schoolID      

在我們需要取值的地方引用全局的app.js,然後取值:

var app = getApp();
onLoad: function () {
    var that = this; 
    //調用應用執行個體的方法擷取全局資料  
    app.getUserSchool(function (school) {
      //更新資料  
    })
},
//取值
......
school: app.globalData.school,
......      

三.總結

小程式了解到這些傳值取值過程,接通接口,呈現資料就快多了,還有哪些可以傳值取值的方法,歡迎大家留言哦,交流才能讓人進步,有什麼錯誤的地方也歡迎大家指正,我将進行更改,覺得部落客寫的還可以的,歡迎點個關注,以後有空常來我的部落格逛逛,雖然可能寫的東西不是很進階,但是對于初級的人來說,還是能幫助到很多東西的,我的博文能幫助到大家我就很開心了,謝謝您百忙之中的觀看,一起加油進步,哇哈哈哈