【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