vue中 this.$set

背景:

vue开发时,编辑页面更改时间的值,发现值更改了,但是视图上却没有更新

原因:

在实例创建之后添加新的属性到实例上,如果更新此属性的值,它不会触发视图更新。

受 ES5 的限制,Vue.js 不能检测到对象属性的添加或删除。因为 Vue.js 在初始化实例时将属性转为 getter/setter,所以属性必须在 data 对象上才能让 Vue.js 转换它,才能让它是响应的。

解决办法:

使用 this.$set(this.data, 'key', 'value') 语句为对象添加属性

 

如下代码,给 student对象新增 age 属性

data () {
  return {
    student: {
      name: '',
      sex: ''
    }
  }
}

正确写法

mounted () {
  this.$set(this.student, 'age', 24)
}

 

posted on 2020-07-10 11:29  mlllily  阅读(287)  评论(0编辑  收藏  举报