【vue開發】Object.defineproperty無法監聽到新增的對象屬性


vue2中使用中我們也會遇到這樣的問題

# template
<p @click="adda(obj)">{{ obj.a }}</p>
<p @click="addb(obj)">{{ obj.b }}</p>

# srcript
data () {
    return {
        obj:{
            a:1
        }
    }
},
mounted () {
    this.obj.b = 1;
},
methods: {
    addb(item){
        item.b += 1;
        console.log(this.obj.b)
    },
    adda(item){
        item.a += 1;
    }
}

我們發現點擊obj.a是響應式, 頁面也會更新


而新增的obj.b點擊則不會

 

因為vue2使用的Object.defineproperty無法監聽到新增的對象屬性

 

針對這個問題vue2提供了$set方法來解決

mounted () {
    this.$set(this.obj, "b", 1)
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM