vue 数据修改,但是视图没有更新

在Vue项目中遇到页面数据更新不生效的问题,原因在于Vue无法监听到对象新增属性的变化。解决方案包括:1) 初始化时确保数据对象包含time属性;2) 使用`this.$set()`添加属性;3) 添加属性后调用`this.$forceUpdate()`强制更新视图。通过这些方法可以确保页面数据与源数据同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中遇到过两次这样的事儿,一般都是在修改页面,

在created中赋值
this.form ={...this.data} //this.data 是通过 props 传进来的值  不包含 time
this.form.time.push(moment(this.form.startTime))
this.form.time.push(moment(this.form.endTime))

页面是这样

<a-range-picker :disabled="isPreview"  :show-time="{ format: 'YYYY-MM-DD HH:mm' }"
format="YYYY-MM-DD HH:mm" @change="onDateChange" v-model="form.time" width="100%"/>

首次赋值的时候是可以赋值成功的,但是当我点击清空或重新赋值的时候,虽然数据源的值改变了,但是页面上的值没有改变。

原因:

this.form.time 相当于初始化之后,

然后给这个对象添加了一个属性,vue 监听不到,所以页面上的值没有改变。

解决方式(以下任选其一即可):

1.在初始化时确保有time属性,给data添加time属性,然后在赋值给form

this.data.time.push(this.data.startTime)
this.data.time.push(this.data.endTime)
this.form ={...this.toolMeeting}

2.对象添加属性时,使用this.$set(obj, key, value)

this.$set(obj, key, value)
this.$set(this.form,'time',[this.form.startTime,this.form.endTime])

3.添加完属性后,使用 this.$forceUpdate()

this.$forceUpdate();

参考链接岂梦-解决vue更新了对象数据,视图没有更新icon-default.png?t=M4ADhttps://blog.youkuaiyun.com/qq_42338293/article/details/116961597大雄Obear-Vue数据更新视图不更新的几种解决方案icon-default.png?t=M4ADhttps://blog.youkuaiyun.com/bigbear00007/article/details/102594645

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值