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

vue路由跳转不刷新

vue路由跳转不刷新

慕仙森 2018-08-18 19:50:03
在'game-detail'页面执行this.$router.push()方法,跳转到'game-detail',页面不刷新。因为路由主体没变,变的只是传递的参数id所以从'game-detail?id=1'到'game-detail?id=2',并没有跳转。但是可以在watch里监听$route,监听到id的变化。后来我就在watch里边监听路由,点击后……重新调用了获取页面数据的methods函数。想通过刷新页面数据,再加上把滚动条归零,来模拟页面的刷新。然后……点击后……数据刷新了,页面没变化……父组件是通过props传递给子组件的,请问我应该在子组件里怎么做呢?刚才百度了发现有的人说是在子组件里watch并且deep监听,然后我监听到数据变化了以后在子组件里进行赋值也还是不行。父组件部分内容:<child :data="dataList"/>data里边:dataList: []this.$http.get().then((res)=>{    this.dataList.splice(0, this.dataList.length, ...res) })watch部分:watch: {     $route(to, from) {        this.$http.get().then((res)=>{            this.dataList.splice(0, this.dataList.length, ...res)         })     } }子组件部分内容:<div>{{ getData.name }}</div>props: ['data']data里边:getData: this.data[0]
查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

受邀来答。

路由参数变化但是页面没有刷新这是Vue的组件复用的默认处理方式
文档里面写了

不想复用的话,就在父组件的router-view上加个key
<router-view :key="$route.fullPath"></router-view>


查看完整回答
反对 回复 2018-08-19
?
慕神8447489

TA贡献1780条经验 获得超1个赞

从代码看 你的route压根就没有变化呀 怎么会出发watch呢

试试将getData写成计算属性

computed:{
  getData (){    return this.data[0]
  }
}


查看完整回答
反对 回复 2018-08-19
  • 2 回答
  • 0 关注
  • 4103 浏览
慕课专栏
更多

添加回答

举报

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