doubleyong
管理员
管理员
  • 最后登录2023-12-01
  • 发帖数1156
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
阅读:547回复:0

[微信小程序]微信小程序使用this.setData()遇到的问题及解决方案详解

楼主#
更多 发布于:2023-08-08 09:29
setData 使用方法:



在更改setData下的变量时,直接写key名就可以了的,不用写this.data.属性,如下所示

Page({
    data:{
        value:'hello'
    }
    this.setData({
    value:'修改的值'
    //错误写法:this.data.value:''
    //注意key的名称一定是data中的名称
})
})

setData的第二个参数是一个回调函数,在页面渲染完后执行。
this.setData({
      value:'hello'
    }, () => { //第二个参数
       console.log("在页面渲染完value后再执行");
    })

利用setData()修改数组对象下的一个属性
方法一:使用双引号与单引号

Page({
    data:{   
          List: [{
            id:0,
            name:'test01'
        }]
    }
})
this.setData({
   "List.id": 6
})


方法二:  使用中扩号

his.setData({
   ['List.id']: 2
}





如果数组下有多个对象,我们要如何修改其中的一个属性呢?


wxml部分代码:
//wxml
<block wx:for="pw_List" wx:key="index" id="pw_index">
<view class="message">
<view>pw_item.id、</view>
<view>pw_item.name</view>
</view>
<button bindtap="change" id="pw_item.id">点我修改数据中的name</button>
</block>


错误写法:


//index.js
Page({
 data:{
        List:
        [{
            id:0,
            name:'test01'
        },
        {
            id:1,
            name:'test02'
        }],
    },
change(event){
    let index = event.currentTarget.id;
    this.setData({
    List[index].name:'newName'
})
}
})


这样写会报错:Only digits(0-9) can be put inside [] in the path string

正确写法:
change(event){
 let index = event.currentTarget.id;
    this.setData({
    [`List[${index}].name`]:'newName'
})
}

参考:https://www.yii666.com/blog/300081.html
知识需要管理,知识需要分享
游客


返回顶部

公众号

公众号