前言
當(dāng)我們使用vue開發(fā)時經(jīng)常會遇到當(dāng)vue實例已經(jīng)創(chuàng)建好了想鹰,有時候需要再次給數(shù)據(jù)賦值時,并不能在視圖中改變
在vue文檔中寫著如果在實例創(chuàng)建之后添加新的屬性到實例上憨栽,它不會觸發(fā)視圖更新
因此比如我們修改一個數(shù)組其中的一個值,或者添加一條數(shù)據(jù)時,不管用犯戏。
解決方案
方法一:Vue.set() 方法(this.$set())
Vue.set( target, key, value ) 中有三個參數(shù)
target:要更改的數(shù)據(jù)源(可以是對象或者數(shù)組)
key:要更改的具體數(shù)據(jù) 如果是數(shù)組 就是索引值
value :重新賦的值
this.$set(this.student,"age", 24)
方法二:$forceUpdate
對于深層的窥浪,最好用set方法,這樣vue就可以知道發(fā)生了變化笛丙,同時vue也不建議直接修改length漾脂,可以給一個空數(shù)組來置空。用 forceUpdate 了胚鸯,因為你修改了數(shù)據(jù)骨稿,但是頁面層沒有變動,說明數(shù)據(jù)本身是被修改了姜钳,但是vue沒有監(jiān)聽到而已坦冠,用$forceUpdate就相當(dāng)于按照最新數(shù)據(jù)給渲染一下。
change: function(index) {
this.list[index].sex = '男';
this.$forceUpdate();
},
clear: function() {
this.list.length = 0;
this.$forceUpdate();
}
``