修改數組中的變量,沒法立馬觸發視圖更新(三種解決方案)

第一:使用$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函數沒有自動更新,需手動強制刷新。

相關文章
相關標籤/搜索