微信小程序如何使用setData修改data中子对象的属性值

Posted 小生不才、

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信小程序如何使用setData修改data中子对象的属性值相关的知识,希望对你有一定的参考价值。

在微信小程序开发中数据与页面的绑定是靠data对象来实现的。如果要修改页面中某个变量的值,就需要使用this.setData({变量名:值})。

话不多说例子如下:

test.wxml:

  <view wx:for="{{ editData }}" wx:key="index" data-index="{{ index }}">
    <view class="list-item flex">
      <view class="left">收货人:</view>
      <view class="right">
        <input type="text" placeholder="请填写收货人" value="{{ item.userName }}" bindconfirm="onSave" bindinput="setUserName"/>
      </view>
    </view>
    <view class="list-item flex">
      <view class="left">联系电话:</view>
      <view class="right">
        <input type="text" placeholder="请填写手机号"  value="{{ item.userTell }}" bindconfirm="onSave" bindinput="setUserTell"/>
      </view>
    </view>
    <view class="list-item flex">
      <view class="left">所在地区:</view>
      <view class="right">
        <input type="text" placeholder="请填写所在地"  value="{{ item.area }}" bindconfirm="onSave" bindinput="setUserArea"/>
      </view>
    </view>
    <view class="list-item flex top">
      <view class="left">详细地址:</view>
      <view class="right">
        <textarea placeholder-class="init-textarea" placeholder="请输入收货地址"  value="{{ item.address }}" bindconfirm="onSave" bindinput="setAddress"></textarea>
      </view>
    </view>
  </view>

test.js:

Page({
  data: {
    editData: [],

    publick:{ // 对象实例
      userName: \'\',
      userTell: \'\',
      area: \'\',
      address: \'\',
    },

  },
  onLoad(options) {
    let userData = JSON.parse(options.userData);
    let editData = this.data.editData;
    editData.push(userData)
    // console.log(editData)

    let obj = {}  // 当内容未修改时,可以通过校验
    obj.userName = editData[0].userName,
    obj.userTell = editData[0].userTell,
    obj.area = editData[0].area,
    obj.address = editData[0].address
    this.setData({
      editData: editData,
      publick: obj
    })

  },
  // 用户名称
  setUserName(e){
    let userName = "publick.userName"  
    this.setData({
      [userName]: e.detail.value  // 修改实例对象
    })

  },
  //  用户手机号
  setUserTell(e){
    let userTell = "publick.userTell"
    this.setData({
      [userTell]: e.detail.value
    })
  },
  // 用户所在地
  setUserArea(e){
    let area = "publick.area"
    this.setData({
      [area]: e.detail.value
    })
  },
  // 用户详细地址
  setAddress(e){
    let address = "publick.address"
    this.setData({
      [address]: e.detail.value
    })
  },
  // 保存内容
  onSave(e){
    // console.log(this.data.publick.userTell)
    let phonereg = /^1(3|4|5|7|8)\\d{9}$/;
    let userTell = this.data.publick.userTell
    if(userTell == \'\'){
      wx.showToast({
        title: \'请输入手机号\',
        icon: \'none\',
      });
      return;
    } else
    if(!phonereg.test(userTell)){
      wx.showToast({
        title: \'手机号输入错误\',
        icon: \'none\',
      });
      return;
    } else {
      let editObj = JSON.stringify(this.data.publick)
      wx.navigateTo({
        url: \'/mallPages/pages/addressList/addressList?editObj=\' + editObj,
      })
    }
  },
  
})

注意(重点主要是这个位置如何获取的值,如何绑定的值):

  setUserName(e){
    let userName = "publick.userName"  
    this.setData({
      [userName]: e.detail.value  // 修改实例对象
    })
  },

 

内容参考:https://www.jianshu.com/p/6724e0cc466c

 

以上是关于微信小程序如何使用setData修改data中子对象的属性值的主要内容,如果未能解决你的问题,请参考以下文章

关于微信小程序里面this.setData到底怎样或运行的

微信小程序中的 this.setData()

微信小程序setData复杂数组的更新删除添加拼接

微信小程序报错 this.setData?

微信小程序this.setData修改对象中某个属性的值

微信小程序计算后,怎么赋值给变量,而且在页面中输出呢?