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

Posted 水星记_

tags:

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

前言

做过微信小程序的人都知道,this.setData()方法是用于将逻辑层的数据发送到视图层,同时改变对应的this.data的值,简单来说就是通过this.setData()方法去修改或者更新data中的值。那不知道大家有没有遇到这么一种情况,我要修改对象中某个属性的值该怎么办呢?是不是第一想到的就是这样写:

结果是在编译器中就直接报错,很显然,肯定是不能这样写的,那如果我就是想要修改对象中某个属性的值呢,别担心,下面两种写法就可以完全满足你的要求。

第一种:通过放在数组中的方式 ['对象.属性']: 值

小案例

.wxml

<view>
    <!-- // gather.defChange相当于拿到data中gather对象中defChange的值 -->
    <view>gather.defChange</view>
    <!-- // bindtap 点击事件 -->
    <button bindtap="btnClick">点击修改</button>
</view>

.js

Page(
    data: 
        gather: 
            defChange: "默认值---60",
        ,
    ,
    btnClick: function () 
        this.setData(
            ['gather.defChange']: "修改后的值---100"
        )
    ,
)

第二种:通过放在对象中的方式 对象: 属性: '值'

小案例

.wxml

<view>
    <view>gather.typical</view>
    <view>gather.defChange</view>
    <button bindtap="btnClick">点击修改</button>
</view>

.js

Page(
    data: 
        gather: 
            typical: "默认值---0",
            defChange: "默认值---60",
        ,
    ,
    btnClick: function () 
        this.setData(
            gather: 
                defChange: "修改后的值---100"
            
        )
    ,
)


可以看到一个很明显的问题,页面开始明明有一个 “默认值---0” ,但是当我点击修改后,我想要修改的值改变了,但是页面开始就存在的 “默认值---0” 却消失了,这是因为第二种的写法会导致该对象的其他属性全部消失,所以大家在使用的时候要慎重选择,尽量使用第一种写法就好啦。

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

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

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

微信小程序 setData 只修改对象中的一个值,其他值保持不变

微信小程序this.setData给对象&数组动态赋值

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

微信小程序之this.setData