如何对Vue的data中定义的对象中未定义的属性进行响应式的修改

受JS的限制,Vue无法检测到属性的添加与删除。VUe实例会在初始化实例时,对属性执行getter/setter的转化过程,所以属性必须得是data对象上存在的,才可以让Vue转化它,这样才能让它是响应式的。

let vm = new Vue({
data:{
		a:1
	}
})
//vm.a是响应式的
vm.b=2
//vm.b则不是响应式的了

上述的a属性时响应式的,所以当a属性发生变化时,会将变化的结果实时的渲染到页面上。而b是vm实例创建之后添加的属性,所以它不是响应式的,所以我们在修改b的值的时候,通过DevTool看到的数据也不会发生改变

解决方法
let vm = new Vue({
	el:"#app",
	dara:{
	obj:{
		name:'aaa'
	}
})
  • 方法一:利用Vue.set(Object,key,value)
Vue.set(this.obj,"sex","women")
  • 方法二:利用this.$set(this.object,key,value)
this.$set(this.obj,"sex","man")

Vue不允许在初始化实例之后添加属性,同时也不允许在初始化实例之后,删除属性,所以要想删除已经在data中定义好的对象中存在的属性,可以使用

this.$delete(this.obj,"name")
//这样删除属性之后,页面上的数据也会实时的进行响应
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值