小程序setData赋值的坑

小程序的每个页面都有个data对象来存放当前页面的变量,而小程序的setData可以直接给对应的元素进行赋值;

Page({
  data:{
    goods: {
      id: 1,
      pic: '/image/goods1.png',
     
    },
    num: 1,
    maxnum:3, //库存
    status:'有货',
   
  },

   onLoad:function(options){
        let id = options.id
        this.setData({
            num:3   //可以给data的属性直接赋值
        })
    }
})

2.但是有时候想给属性值的对象或者数组进行赋值,例如给data.goods.id进行赋值,就要用另外的方式

​
Page({
  data:{
    goods: {
      id: 1,
      pic: '/image/goods1.png'     
    },
    num: 1,
    maxnum:3, //库存   
  },

  onLoad:function(options){   
    let id = options.id;
    let str = "goods.id"; //直接拼接成字符串
    self.setData({
        [str]:id   //用中括号包裹这个字符串
    })
})

​

3.如果是数组也是一样的拼接字符串

​
​
Page({
  data:{
    goods: [
            {id: 1,pic: '/image/goods1.png'},
            {id: 1,pic: '/image/goods1.png'}
           ],
    num: 1,
    maxnum:3, //库存   
  },

  onLoad:function(options){   
    let id = options.id
    let index = 1
    let str = "goods["+index+"].id"; //直接拼接成字符串
    self.setData({
        [str]:id   //用中括号包裹这个字符串
    })
})

​

​

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在微信小程序中,setData方法用于更新小程序的数据,可以通过该方法将数据更新到小程序的视图层。如果你在使用setData方法时发生赋值失败的情况,可能是以下几个原因: 1. 数据类型不匹配:在setData方法中,数据类型必须与定义的数据类型一致,否则会导致赋值失败。比如,如果你定义了一个Number类型的变量,但是在setData方法中却传入了String类型的值,就会导致赋值失败。 2. 变量未定义或未初始化:在setData方法中,需要传入定义或初始化过的变量,否则会导致赋值失败。如果你赋值的变量未定义或未初始化,就会导致setData方法无法找到该变量,从而赋值失败。 3. 赋值语法错误:在使用setData方法时,需要注意赋值语法是否正确。如果你的赋值语法有误,就会导致赋值失败。比如,如果你在setData方法中使用了错误的变量名或操作符,就会导致赋值失败。 4. 异步调用问题:在某些情况下,setData方法可能会发生异步调用的问题。如果在异步调用中使用setData方法,就可能导致赋值失败。为了避免这种问题,可以使用wx.nextTick方法来延迟setData方法的执行,确保其在异步调用之后执行。 如果以上方法仍然无法解决你的问题,可以先检查你的代码是否存在其他问题,例如语法错误、变量命名错误等等。同时,建议在控制台输出相关变量的值,查看其是否正确赋值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

runtoweb3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值