vue3封装全局方法

场景:各个模块详情中存在附件列表数据,需要再每个中添加一个预览附件的方法,是后期提出的需求,所以要在每个模块中进行添加,就去将预览方法封装一下。

将公共方法封装在utils下

utils/filePreview.ts

复制代码
import router from '@/router'; // 引入路由实例

/**
 * 文件预览公共方法
 * @param {Object} row - 当前文件数据
 */
export function filePreview(row) {
  localStorage.setItem('filedata', JSON.stringify(row)); // 将文件数据存储到 localStorage 中
  const url = `${window.location.origin}${router.options.base || ''}/filePreview`; // 构造跳转 URL
  const link = document.createElement('a'); // 创建 a 标签
  link.href = url;
  link.target = '_blank'; // 新窗口打开
  link.click(); // 触发点击事件
}

然后再main.ts中进行引用注册

import App from './App.vue'

import {filePreview} from '@/utils/filePreview';

const app = createApp(App)

app.config.globalProperties.$filePreview = filePreview;

使用方法

<el-button

size="small"

type="primary"

@click="$filePreview(scope.row)"

>

预览

</el-button>

相关推荐
cindershade几秒前
使用 SSE 单向推送实现 系统通知功能
前端
Mapmost1 分钟前
【高斯泼溅】Mapmost分区训练,让大场景3DGS建模从此高效且高质
前端
进击的野人1 分钟前
Vue生命周期详解:从创建到销毁的全过程
前端·vue.js·面试
鹏北海2 分钟前
微前端实现方式:HTML Entry 与 JS Entry 的区别
前端·javascript·面试
用户4099322502123 分钟前
Vue3的`:style`对象语法:单位、属性名、响应式,这些细节你都踩过坑吗?
前端·ai编程·trae
Mintopia5 分钟前
🎯 Rect 中鼠标移动拾取元素可行性架构分析
前端·react.js·架构
水臭6 分钟前
一个“够用就好”的浏览器端实时预览编辑器
前端
coding随想7 分钟前
前端革命:自定义元素如何让HTML元素“活“起来,重构你的开发体验!
前端·重构·html
爱上妖精的尾巴8 分钟前
6-5 WPS JS宏 集合成员迭代(随机生成试题)
开发语言·前端·javascript
是你的小橘呀8 分钟前
React 组件通信:组件间的 "悄悄话" 指南
前端·javascript