• 首页
  • 产品中心
    • 数式Oinone四大产品

      低代码开发平台无代码开发平台集成开发平台AI大模型开发
    • 数式Oinone体系能力

      用户与组织权限管理文件管理消息中心国际化业务审计
    • 数式Oinone核心产品特性

      低无一体面向软件公司场景无限制应用级扩容可分可合
  • 服务中心
    • 客户服务

      预约演示方案咨询私有部署找人定制
    • 开发者

      问答下载
    • Oinone学院

      社区学习

    《精讲面向软件公司的低代码平台——以Oinone为例》

  • 合作伙伴
    渠道申请伙伴名录专家库
  • 关于数式
0571-88757863

字段:如何在多标签页切换时自动刷新视图


一、场景概述

在日常的项目开发进程中,多视图(Multi - View)标签的应用场景屡见不鲜。在此类场景下,当用户于不同视图间进行切换操作时,往往需要对当前处于活动状态标签内的视图数据或状态予以刷新。本文将对如下代码展开详尽剖析,并阐释如何借助这段代码,实现在视图切换之际,对相应视图进行精准刷新。需特别说明的是,下述代码位于 ss - boot 项目中的 main.ts 文件内。

import { VueOioProvider } from '@oinone/kunlun-dependencies';
import { delay } from 'lodash-es';

VueOioProvider(
  {
    ... 自己的配置
  },
  [
    () => {
      setTimeout(() => {
        subscribeRoute(
          (route) => {
            const page = route.segmentParams.page || {};

            // 如果不是表格类型,则不刷新(根据自己的需求判断)
            if (page.viewType !== ViewType.Table) {
              return;
            }

            const { model, action } = page;

            const multiTabsManager = MultiTabsManager.INSTANCE;

            delay(() => {
              const tab = multiTabsManager.getActiveTab();

              if (tab?.key && tab.stack.some((s) => s.parameters?.model === model && s.parameters?.action === action)) {
                multiTabsManager.refresh(tab.key);
              }
            }, 200);
          },
          { distinct: true }
        );
      }, 1000);
    }
  ]
);

二、VueOioProvider 及其作用

首先,代码通过 VueOioProvider 初始化应用程序或组件,并传入两部分参数:

  • 配置对象:可以根据实际业务需求进行自定义配置;
  • 回调函数数组:这里传入了一个匿名函数,用于在应用初始化后执行额外的逻辑

三、延时执行与路由监听

在回调函数中,使用了 setTimeout 延时 1000 毫秒执行,目的通常是为了确保其他组件或全局状态已经初始化完毕,再开始进行路由监听。

随后,代码调用 subscribeRoute 来监听路由的变化。subscribeRoute 接收两个参数:

  • 回调函数:每次路由变化时都会触发该函数,并将最新的 route 对象传递给它;
  • 配置对象:此处使用 { distinct: true } 来避免重复的触发,提高性能。

四、判断视图类型

在路由回调函数内部,首先通过 route.segmentParams.page 获取当前页面的配置信息。通过判断 page.viewType 是否等于 ViewType.Table,代码可以确定当前视图是否为“表格类型”:

  • 如果不是表格类型:则直接返回,不做刷新操作;
  • 如果是表格类型:则继续执行后续刷新逻辑。

这种判断机制保证了只有特定类型的视图(例如表格)在切换时才会触发刷新,避免了不必要的操作

五、多视图标签的刷新逻辑

在确认当前视图类型为表格后,需从 MultiTabsManager 中获取当前处于活动状态的标签。具体操作为调用 MultiTabsManager.INSTANCE.getActiveTab() 方法,该方法将返回当前活动的标签对象。 随后,进行条件判断。若 key 存在,且激活标签内部所存储的 action 与 url 保持一致,此时则调用 multiTabsManager.refresh(key) 方法,以此实现对当前标签内视图的刷新操作。

编辑此页
最近更新:2026/1/15 04:02
上一页
发布:前端发布流程
下一页
字段:打开的弹窗操作产生的数据回填给字段
默认页脚
Copyright © 2026 Mr.Hope