父组件是一个显示多个商品的列表,子组件是一个弹窗组件,然后子组件根据列表传过来的id再重新请求数据,在这个弹窗组件改变数据,请问是用 watch 这个方法吗?还有别的方法吗?因为假如我点击第 10 个商品,在子组件增加了一个看下一条方法,看到第 20 个商品后,关闭出来再次点击第 10 个商品,子组件仍然显示的是第 20 个商品的内容,原因是 watch 看到传来的还是第 10 个商品的 id,所以不会再改变,请问有什么好的方法解决吗?谢谢。
3 回答
达令说
TA贡献1821条经验 获得超6个赞
我后来对于问题的解决方法是强制给子组件的 watch 方法里面发送一个会变动数据,那就是时间,本来每次都是会发送一个 id,然后子组件根据不同的 id 来请求数据,从而让页面看上去会改变,但是有时候会发和上一次相同的 id 过去给子组件,而子组件已经接受过这个相同 id,这个时候 watch 里面的方法就不会被执行了,而我想的就是要让它也执行,于是我这样做
父组件中的子组件
<project v-show='isShow' :toProject='messagesContent'></project>
messagesContent 本来存放的是 id
同时再多传一个 newTime
发送的是下面的时间
var new_time = new Date();
var obj = {
id: id,
time: new_time
}
this.messagesContent = obj
子组件的 watch 方法,因为父传过来都会带着时间,所以 watch 一定会执行里面的 doSomething 方法
watch: {
toProject: function () {
this.doSomething();
}
},
添加回答
举报
0/150
提交
取消