Vue 关闭当前页、关闭当前标签tagsView的实现方法

 更新时间:2022年08月09日 11:47:38   作者:菜鸟学编程  
这篇文章主要介绍了Vue 关闭当前页、关闭当前标签tagsView,主要有两种方式,一种是在vue页面直接实现,另一种在js文件中写自定义函数,在vue页面中调用,本文通过实例代码介绍的非常详细,需要的朋友可以参考下

由于项目使用tagsView,关闭当前页面需要通过关闭当前标签来实现 

涉及到几个点:

1. 移除 VisitedView 和 CachedView 中的当前项

2. 跳转到最后一次访问的标签

主要思路:比对 路由路径 ( this.$route.path)

两种方式:

一、 在vue页面直接实现

closePage()
      var currentView = this.$store.state.tagsView.visitedViews[0]
      for (currentView of this.$store.state.tagsView.visitedViews) {
        if (currentView.path === this.$route.path) {
          break
        }
      }
      this.$store.dispatch('tagsView/delView', currentView)
        .then(({ visitedViews }) => {
          if (currentView.path === this.$route.path) {
            const latestView = this.$store.state.tagsView.visitedViews.slice(-1)[0]
            if (latestView) {
              this.$router.push(latestView)
            } else {
              // 如果没有其他标签则跳转到首页
              if (currentView.name === '首页') {
                this.$router.replace({ path: '/redirect' + currentView.fullPath })
              } else {
                this.$router.push('/')
              }
            }
          }
        })

二、在js文件中写自定义函数,在vue页面中调用

import router from '@/router/routers'
 
// 关闭当前页 关联tagView
export function closePage(store, route) {
  var currentView = store.state.tagsView.visitedViews[0]
  for (currentView of store.state.tagsView.visitedViews) {
    if (currentView.path === route.path) {
      break
    }
  }
  store.dispatch('tagsView/delView', currentView)
    .then(({ visitedViews }) => {
      if (currentView.path === route.path) {
        const latestView = store.state.tagsView.visitedViews.slice(-1)[0]
        if (latestView) {
          router.push(latestView)
        } else {
          if (currentView.name === '首页') {
            router.replace({ path: '/redirect' + currentView.fullPath })
          } else {
            router.push('/')
          }
        }
      }
    })
}

到此这篇关于Vue 关闭当前页、关闭当前标签tagsView的文章就介绍到这了,更多相关Vue 关闭当前页内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用vue-cli初始化项目时运行‘npm run dev’报错及解决

    使用vue-cli初始化项目时运行‘npm run dev’报错及解决

    这篇文章主要介绍了使用vue-cli初始化项目时运行‘npm run dev’报错及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Elementui el-input输入框校验及表单校验实例代码

    Elementui el-input输入框校验及表单校验实例代码

    输入框是使用非常多的元素,用来输入用户名、密码等等信息,Element提供了功能和样式丰富的输入框,下面这篇文章主要给大家介绍了关于Elementui el-input输入框校验及表单校验的相关资料,需要的朋友可以参考下
    2023-06-06
  • 基于vuejs+webpack的日期选择插件

    基于vuejs+webpack的日期选择插件

    这篇文章主要为大家详细介绍了基于vuejs+webpack的日期选择插件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • vue router如何实现tab切换

    vue router如何实现tab切换

    这篇文章主要介绍了vue router如何实现tab切换,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • Vue通过vue-router实现页面跳转的全过程

    Vue通过vue-router实现页面跳转的全过程

    这篇文章主要介绍了Vue通过vue-router实现页面跳转的操作步骤,文中有详细的代码示例和图文供大家参考,对大家的学习或工作有一定的帮助,感兴趣的朋友可以参考下
    2024-04-04
  • Vue项目中使用setTimeout存在的潜在问题及解决

    Vue项目中使用setTimeout存在的潜在问题及解决

    这篇文章主要介绍了Vue项目中使用setTimeout存在的潜在问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • 解决vue中this.$set()不更新问题

    解决vue中this.$set()不更新问题

    我在做一个附件删除功能的时候发现,明明打印出来附件已经没有数据了但是页面就是不刷新, this.$set()不生效,所以本文小编给大家介绍了vue中this.$set()不更新的解决方法,需要的朋友可以参考下
    2023-11-11
  • SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法

    SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法

    这篇文章主要介绍了SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题,需要的朋友可以参考下
    2018-01-01
  • Vue声明式导航与编程式导航示例分析讲解

    Vue声明式导航与编程式导航示例分析讲解

    这篇文章主要介绍了Vue中声明式导航与编程式导航,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-11-11
  • VUE.CLI4.0配置多页面入口的实现

    VUE.CLI4.0配置多页面入口的实现

    这篇文章主要介绍了VUE.CLI4.0配置多页面入口的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11

最新评论