Vue单页SPA后台管理点击刷新当前页面

栏目: JavaScript · 发布时间: 5年前

内容简介:​ 使用vue都知道 SPA页面中跳转当前页面是不会有反应的,例如 在login页面使用需求: 点击左侧菜单的当前导航页面属性我们看一下Vue-router的文档

​ 使用vue都知道 SPA页面中跳转当前页面是不会有反应的,例如 在login页面使用 this.$router.push('login') ,页面是不会出现任何现象的,push的路由也不会进入你是记录,那么我们如何实现在单页应用的刷新呢?

需求: 点击左侧菜单的当前导航页面属性

Vue单页SPA后台管理点击刷新当前页面

我们看一下Vue-router的文档

导航式编程

router.push() // 添加一个新的记录
router.replace() // 不会向 history 添加新记录
router.go(n) //向前或者后退多少步 
复制代码

很显然没刷新当前页面的api,这个问题,已经有大佬进行了解决,就是 TagsView ,有兴趣的可以看看实现方法

Vue单页SPA后台管理点击刷新当前页面

参考的大佬的思路.在左侧菜单导航栏上面也实现了点击刷新当前页面

思路

很明显,单页应用不存在自己跳转到自己的api,所以我们需要借助中间页面进行跳转

  1. 创建一个中间页面 redirect
  2. 刷新自己不应该添加到浏览记录里面,所以使用 router.replace() ,并携带当前页面的路由路径
  3. 在中间页面的 created 函数中获取携带的参数路由路径,并进行再次 router.replace() 完成当前页面的刷新

因为这里使用的 vue-admin-template ,所以需要对侧边栏进行一些修改

src\views\layout\components\Sidebar\SidebarItem.vue

<template>
	// ....
      <app-link :to="resolvePath(onlyOneChild.path)">
        <el-menu-item
          :index="resolvePath(onlyOneChild.path)"
          :class="{ 'submenu-title-noDropdown': !isNest }"
          @click="reload(item)" // 添加点击方法
        >
          <item :meta="Object.assign({}, item.meta, onlyOneChild.meta)" />
        </el-menu-item>
      </app-link>
    </template>
// ....
</template>

<script>
export default {
  methods: {
   // ...
    // 点击重载
    reload(item) {
      // 如果发现当前路由与点击的路由一致就携带路由路径跳转到redirect页面
      if (this.$route.name === item.name) {
        this.$nextTick(() => {
          // params 默认会解析成为path字段,如果使用参数的形式 / 会来解析成为%
          this.$router.replace({
            path: '/redirect' + this.$route.fullPath,
          })
        })
      }
    }
  }}
</script>

复制代码

创建中转页面

src\views\redirect\index.vue

<script>
export default {
  created() {
    console.log(this.$route);
    const { params, query } = this.$route
    const { path } = params
    this.$router.replace({ path: '/' + path, query })
  },
  render: function (h) {
    return h() // avoid warning message
  }
}
</script>
复制代码

配置路由

{
    path: '/redirect',
    component: Layout,
    name: 'redirect',
    hidden: true,
    children: [
      {
        path: '/redirect/:path*', // path为默认名称 通配符*必须存在 反之404
        component: () => import('@/views/redirect/index')
      }
    ]
  }
复制代码

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JAVA 2核心技术 卷Ⅰ

JAVA 2核心技术 卷Ⅰ

[美] 霍斯特曼、[美] 科奈尔 / 叶乃文、邝劲筠 等 / 机械工业出版社 / 2006-5 / 88.00元

本书是Java技术经典参考书,多年畅销不衰,第7版在保留以前版本风格的基础上,涵盖Java2开发平台标准版J2SE5.0的基础知识,主要内容包括面各对象程序设计、反射与代理、接口与内部类、事件监听器模型、使用Swing UI工具箱进行图形用户界面设计,异常处理、流输入/输出和对象序列化、泛型程序设计等。 本书内容翔实、深入浅出,附有大量程序实例,极具实用价值,是Java初学者和Java程序员......一起来看看 《JAVA 2核心技术 卷Ⅰ》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具