修改数组中的变量,没法立马触发视图更新(三种解决方案)

第一:使用$set.vue

直接给student赋值操做,虽然能够新增属性,可是不会触发视图更新函数

mounted () {  
this.student.age = 24  
}

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

要处理这种状况,咱们能够使用$set()方法,既能够新增属性,又能够触发视图更新。code

错误写法:this.$set(key,value)(ps: 多是vue1.0的写法)对象

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

正确写法:this.$set(this.data,”key”,value’)get

mounted () {  
this.$set(this.student,"age",

第二种:用ES6的对象.assign更新对象渲染

Object.assign方法用于对象的合并,将源对象( source )的全部可枚举属性,复制到目标对象( target )date

第三种:用强制刷新$forceUpdate()搜索

添加方法

this.$forceUpdate();

进行强制渲染,效果实现。搜索资料得出结果:由于数据层次太多,render函数没有自动更新,需手动强制刷新。

相关文章
相关标签/搜索