小程序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   //用中括号包裹这个字符串
    })
})

​

​

猜你喜欢

转载自blog.csdn.net/littlexiaoshuishui/article/details/83448146