背景:
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) }