为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

阿波罗的战车 2019-03-19 17:14:28
父组件是一个显示多个商品的列表,子组件是一个弹窗组件,然后子组件根据列表传过来的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();

      }

  },


查看完整回答
反对 回复 2019-04-10
  • 3 回答
  • 0 关注
  • 2334 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信