Vben Admin 关闭指定的tabs标签页

项目场景:

使用Vben Admin开发时,一般新增是抽屉或者model框来操作,当我们有需求场景新增是新开一个页面,新增结束后需要关闭对应打开的tabs标签页

 


问题描述

关闭指定的标签页在文档中找不到时,我们只能看框架源码:在store/modules/multipleTab.ts文件下,我们能看到各种tabs标签页对应的方法,我们只需要找到关闭指定标签页的方法如下

// Close according to key
    //key 传入指定路径, router传入路由
    async closeTabByKey(key: string, router: Router) {
      const index = this.tabList.findIndex((item) => (item.fullPath || item.path) === key);
      if (index !== -1) {
        await this.closeTab(this.tabList[index], router);
        const { currentRoute, replace } = router;
        // 检查当前路由是否存在于tabList中
        const isActivated = this.tabList.findIndex((item) => {
          return item.fullPath === currentRoute.value.fullPath;
        });
        // 如果当前路由不存在于TabList中,尝试切换到其它路由
        if (isActivated === -1) {
          let pageIndex;
          if (index > 0) {
            pageIndex = index - 1;
          } else if (index < this.tabList.length - 1) {
            pageIndex = index + 1;
          } else {
            pageIndex = -1;
          }
          if (pageIndex >= 0) {
            const page = this.tabList[index - 1];
            const toTarget = getToTarget(page);
            await replace(toTarget);
          }
        }
      }
    },

页面使用:

1.我们能看到该文件最后export useMultipleTabWithOutStore()这个函数,则我们需要在页面引入

2.调用保存数据接口成功后关闭指定标签

  import { useMultipleTabStore } from '/@/store/modules/multipleTab';
  import { useRoute, useRouter } from 'vue-router';

 export default defineComponent({
    setup(_) {
      const route = useRoute();
      const router = useRouter();
      //关闭指定标签 引入tabs里面的方法
      const tabStore = useMultipleTabStore();

        //调用接口保存数据
        dictsSaveApi(passParams).then(async (res) => {
            if (res) {
                
              msg.success('提交成功!');
              //关闭指定标签
              const { fullPath } = route; //获取当前路径
              await tabStore.closeTabByKey(fullPath, router);
            }
          });
        
    }

})

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值