请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,我有个地方不大明白

数组监听这里,如果这样写依然是监听不到的啊。
data.nums.push({name: 100})
data.nums[3].name = 20

正在回答 回答被采纳积分+3

2回答

mrmooc 2021-03-04 21:18:24

push一个对象的时候,可以先将这个对象用Object.defineProperty包装一下

然后 : data.nums.push(set({}, 'name', 100));

再改动name的值得时候,setter就会有响应

data.nums[3].name = 20;

不知道我这么理解有问题没有,期望老师给指点一二。

0 回复 有任何疑惑可以回复我~
双越 2020-08-05 08:25:39

第二种方式肯定不行的。

第一种方式案例说应该可以,你调试一下下图这个方法,是不是被执行了?

https://img1.sycdn.imooc.com/szimg/5f29fc7609f577b112140398.jpg

0 回复 有任何疑惑可以回复我~
  • 提问者 催晚 #1
    第一种方式确实是可以的,我疑惑的是第一种方式赋值之后用第二种方式就无法监听了,那Vue是如果监听第二种方式的呢?
    回复 有任何疑惑可以回复我~ 2020-08-05 14:50:18
  • 双越 回复 提问者 催晚 #2
    Vue2.x 应该也无法监听第二种方式。
    回复 有任何疑惑可以回复我~ 2020-08-05 18:24:35
  • 慕粉3871079 回复 双越 #3
    第二种需要vue的set了吧,直接修改数组的数据需要set一下。
    回复 有任何疑惑可以回复我~ 2021-02-20 16:13:06
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信