问题分析:路由之间的切换,其实就是组件之间的切换,不是真正的页面切换。这也会导致一个问题,就是引用相同组件的时候,会导致该组件无法更新。

方案一:使用 watch 进行监听

  watch: {
/* ==== 解决详情页Url变化内容不更新问题 ==== */
$route (to, from) {
// 获取路由参数
this.articleId = from.params.articleId
// 从新初始化组件数据
this._initData()
}
}

注意:这里有个问题,$router 是全局性的,即使添加在组件里面,使用此方法要添加判断

watch: {
/* ==== 解决详情页Url变化内容不更新问题 ==== */
$route (to, from) {
// 判断是否为当前需求页面
if (to.fullPath.indexOf('/articles-details') !== -1) {
// 获取路由参数
this.articleId = from.params.articleId
// 从新初始化组件数据
this._initData()
}
}
}

方案二:router-view组件增加不同的 key值

<template>
<div id="AppFG" @touchmove.prevent>
<!--
<transition name="router-fade" mode="out-in">
</transition>
-->
<!--
<router-view :key="key" />增加一个不同:key值,这样vue就会识别这是不同的<router-view />
-->
<keep-alive>
<router-view :key="key"/>
</keep-alive>
</div>
</template> <script>
export default {
name: 'App',
computed: {
key () {
return this.$route.path + Math.random()
}
}
}
</script>

方案三:销毁 router-link 组件,重新生成

<template>
<div id="AppFG" @touchmove.prevent>
<!--
<transition name="router-fade" mode="out-in">
</transition>
-->
<!--
<router-view v-if="routerAlive" />增加一个不同v-if值,来先摧毁<router-link />,然后再重新创建<router-link />起到刷新页面的效果。
-->
<keep-alive>
<router-view v-if="routerAlive"/>
</keep-alive>
</div>
</template> <script>
export default {
name: 'App',
data () {
return {
routerAlive: true
}
},
methods: {
routerRefresh () {
this.routerAlive = false
this.$nextTick(() => {
this.routerAlive = true
})
}
}
}
</script>

Vue解决同一页面跳转页面不更新的更多相关文章

  1. Vue路由守卫(跳转页面置顶的处理方)

    在用Vue 框架开发时,在电脑调试没有任何问题,但是用手机调试时会发现页面跳转的不对.就是跳转时页面展示的滑动位置不对,会保留上次跳转页面时的跳转位置.因此需要对页面的路由跳转进行优化,需要用到Vue ...

  2. Chrome开发者工具应对页面跳转页面点击事件等实用干货

    1.如何解决页面跳转 打开Preserve log即可 禁用页面缓存在右边的disable cache 2.如何监听页面点击 重要的是举一反三,看不懂英文去翻译!Mouse鼠标,click点击,,,, ...

  3. sharePoint中简单的父页面跳转子页面代码!

    1,SharePoint中挺简单的一个父页面跳转到子页面的Js代码!常常用到,每次都到以前的项目中去找代码,挺麻烦! (1)父页面代码. function imgAddParentclick() { ...

  4. Web端 页面跳转 页面传值

    要把  Default.aspx 页面    TextBox1中的值    传值到   Default.aspx   Label上去 C#服务端跳转页面 Response    响应请求对象 Redi ...

  5. vue点击tab跳转页面,给点击的tab添加样式,且解决刷新以后点击的tab样式消失问题

    <ul class="nij"> <li v-for="item in nav" @click="selectNav(item.ti ...

  6. [HTML]js实现页面跳转,页面A跳到另一个页面B.以及页面传值(中文)

    要实现从一个页面A跳到另一个页面B,js实现就在A的js代码加跳转代码 JS跳转大概有以下几种方式: 第一种:(跳转到b.html)<script language="javascri ...

  7. jsp页面跳转页面的几中方式(同步更新)

    1. 通过<a>标签跳转网页a) 通过<a>标签直接跳转b) 通过<a>标签调用JavaScript函数,然后再进行跳转 2. 通过表单形式跳转网页a) 通过表单跳 ...

  8. href 页面跳转页面 参数

    $.getUrlParam = function (name) { var reg = new RegExp("(^|&)" + name + "=([^& ...

  9. vue如何在路由跳转的时候更新组件

    项目中在路由跳转的时候碰到一个问题,没有更新视图,如何解决呢: https://segmentfault.com/a/1190000008879966 http://www.tuicool.com/a ...

随机推荐

  1. HBase 笔记1

    cap理论: 一致性  可用性   可靠性 任何分布式系统只能最多满足上面2点,无法全部满足 NOSQL  = Not Only SQL = 不只是SQL HBase速度并不快,知识当数据量很大时它慢 ...

  2. Form数据迁移

    --------------------------------------添加linkserver--------------------------------------- --EXEC mas ...

  3. Oracle表空间迁移Move Tablespace

    move一个表到另外一个表空间时,索引不会跟着一起move,而且会失效.(LOB类型例外) move分为: *普通表move *分区表move *LONG,LOB大字段类型move来进行测试和说明. ...

  4. vue store存储commit和dispatch

    vue store存储commit和dispatch this.$store.commit('toShowLoginDialog', true);this.$store.dispatch('toSho ...

  5. daily start

    2019/4/26 1. to summerize the merge experience, about makefile, about compile error analysis. 2. loo ...

  6. Vue基础进阶 之 常用的实例属性

    Vue实例属性: vue实例直接调用的属性: 常用的实例属性: vm.$data:获取属性: vm.$el:获取实例挂载的元素: vm.$options:获取自定义选项/属性: vm.$refs:获取 ...

  7. Docker Kubernetes 创建管理 Pod

    Docker Kubernetes 容器扩容与缩容 环境: 系统:Centos 7.4 x64 Docker版本:18.09.0 Kubernetes版本:v1.8 管理节点:192.168.1.79 ...

  8. Python Redis 发布订阅

    发布者:服务器 订阅者:Dashboad和数据处理 频道主逻辑 import redis class RedisHelper: def __init__(self): # 链接服务端 self.__c ...

  9. 网站基础html javascript jquery

    第二章HTML HBuilder的使用 边改边看模式 chrome浏览器看. HTML的基本格式 超文本标记语言 HyperText Markup Language HyperText 超文本 Mar ...

  10. Jenkins安装及配置

    Jenkins 简介 Jenkins 是一个开源项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.它的功能包括: 1.持续的 ...