微信小程序setData 赋值对象属性

这几天在做页面的时候,关于setData方法产生了一点疑问,现在来总结一下。

首先说一下赋值对象属性的两种方法

1.修改data下的对象

this.setData({
	'params.name':'李四'
})

2.修改data下的对象数组

this.setData({
	'example[1].text':"清零"
})

如果要给对象数组中某一个对象的某个属性赋值,可以采用以下两种方式:

var temp1 = 'example['+order+'].state'
var temp2 = `example[${order}].text`

然后通过[temp1]:'runnning'这样的方式来进行赋值

下面是代码示例

wxml

<view class="container1">
    <viwe>{{params.name}}</viwe>
    <button type="primary" bindtap="changetext1"> 点击我改变文字</button>
</view>

<view class="container2">
    <view class="container-content" wx:for="{{example}}">
        <view>{{item.state}}
        </view>
        <view>{{item.text}}
        </view>
        <button type="primary" bindtap="changetext2" data-index="{{index}}"> 点击我改变文字</button>
    </view>
</view>

js

data: {
        params: {
            name: '张三',
            age: '18',
            gender: 1
          },
          example: [{
            id: '1',
            state:"paused",
            text:"第一个"
          },
          {
            id: '2',
            state:"running",
            text:"第二个"
          }
        ]
    },

    changetext1:function(){
        console.log(1)
        this.setData({
            'params.name':'李四'
        })
    },

    changetext2:function(e){
        var order = e.target.dataset.index
        console.log(e.target.dataset.index)
        var temp1 = 'example['+order+'].state'
        var temp2 = `example[${order}].text`
        this.setData({
            [temp1]:'down',
            [temp2]:'清零'
        })
    },

 效果图

original:

after bindtap:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Gavi曦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值