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

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

在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();
经验分享 程序员 微信小程序 职场和发展