关于vue监听的一些问题

对象的监听

vue通过object.defineProperty将对象的key转化成getter/setter的形式来追踪变化,但是这种追踪方式只能追踪到数据的修改,对象的属性的删除和增加,这种形式追踪不到。为此vue提供可 s e t 和 set 和 setdelete两种API来配合使用,解决监听不到属性新增删除问题。
需要特别注意,在使用 s e t 时 , 需 要 传 递 的 参 数 有 三 个 v m . set时,需要传递的参数有三个 vm. setvm.set(target,key,value),target不能是Vue.js实例或者vue.js实例的根数据对象,所谓的根数据对象是指vm. d a t a ∗ ∗ 在 使 用 data * *在使用 data使delete时候,也可以中另外一种方法实现,但是不太推荐:
delete this.obj.name;
this.obg.ob.dep.notify //手动向依赖发送变化通知;
(说明: ob 是 vue中是否是响应式的判断依据)

在使用$delete时候,target不能是Vue.js实例或者vue.js实例的根数据对象,

数组的监听

vue通过拦截数组原型的方式实现数组的变化的监听,所以有些不是数组原型定义的方法进行的数组操作,发生的变化,是数组感知不到的,比如通过数组下标修改对应位置的值(this.list[0] = 2),或者通过数组长度改变数组(比如通过数组length清空数组的操作: this.list.length = 0 )。
所以进行数组操作的时候,尽量使用数组原型方法操作:
push pop unshift shift concat reverse sort slice splice join

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值