一般情况下,我们遇到watch监听不到的时候,它的immediate(首次监听)和deep(深度监听)两个属性基本都能解决。
今天遇到的问题是我在外出传递对象,并对其进行监听,发现相同的对象不能监听到,即使是我在对象中添加了新的属性也无法监听到。
查询后得知: 在变更(不是替换)对象或数组时,旧值将与新值相同,因为它们的引用指向同一个对象/数组。Vue 不会保留变异之前值的副本。
也就是说,虽然里面的值变了,但是指向对象的指针没有变化,所以就没有监听。
我在里想到了两种:一种是在watch上一环节computed中,在retrun的时候用JSON做下转换改变指针。
第二种是在父级传值的时候用 Object.assign({}, obj) 处理