猿问

vue 怎么调用子组件,根据传值来刷新子组件的内容

父组件是一个显示多个商品的列表,子组件是一个弹窗组件,然后子组件根据列表传过来的id再重新请求数据,在这个弹窗组件改变数据,请问是用 watch 这个方法吗?还有别的方法吗?因为假如我点击第 10 个商品,在子组件增加了一个看下一条方法,看到第 20 个商品后,关闭出来再次点击第 10 个商品,子组件仍然显示的是第 20 个商品的内容,原因是 watch 看到传来的还是第 10 个商品的 id,所以不会再改变,请问有什么好的方法解决吗?谢谢。

阿波罗的战车
浏览 2335回答 3
3回答

达令说

我后来对于问题的解决方法是强制给子组件的 watch 方法里面发送一个会变动数据,那就是时间,本来每次都是会发送一个 id,然后子组件根据不同的 id 来请求数据,从而让页面看上去会改变,但是有时候会发和上一次相同的 id 过去给子组件,而子组件已经接受过这个相同 id,这个时候 watch 里面的方法就不会被执行了,而我想的就是要让它也执行,于是我这样做父组件中的子组件<project v-show='isShow' :toProject='messagesContent'></project>messagesContent 本来存放的是 id同时再多传一个 newTime发送的是下面的时间var new_time = new Date();var obj = {&nbsp; id: id,&nbsp; time: new_time}this.messagesContent = obj子组件的 watch 方法,因为父传过来都会带着时间,所以 watch 一定会执行里面的 doSomething 方法watch: {&nbsp; &nbsp; &nbsp; toProject: function () {&nbsp; &nbsp; &nbsp; this.doSomething();&nbsp; &nbsp; &nbsp; }&nbsp; },
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答