vue中如何实现一个弹窗插件
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要介绍"vue中如何实现一个弹窗插件",在日常操作中,相信很多人在vue中如何实现一个弹窗插件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"vue中如何实现一
千家信息网最后更新 2025年12月02日vue中如何实现一个弹窗插件
这篇文章主要介绍"vue中如何实现一个弹窗插件",在日常操作中,相信很多人在vue中如何实现一个弹窗插件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"vue中如何实现一个弹窗插件"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
popup.vue
{{text}}
组件html结构, 外层divposition:fixed定位, 内层div显示弹窗内容
export default { name: 'popup', props: { text: { //文字内容 type: String, default: '' }, time: { //显示的时长 type: Number, default: 3e3 }, }, data(){ return { visible: false } }, methods: { open() { this.visible = true clearTimeout(this.timeout); this.$emit('show') if(this.time > 0){ this.timeout = setTimeout(() => { this.hide() }, this.time) } }, hide() { this.visible = false this.$emit('hide') clearTimeout(this.timeout); } }}popup.vue只有2个属性: 文本和显示时间。组件显示隐藏由内部属性visible控制,只暴露给外界open和hide2个方法,2个方法触发对应的事件
测试一下
插件化
组件功能写好了,但是这种调用方式显得很累赘。举个例子layer.js的调用就是layer.open(...)没有import,没有ref,当然要先全局引用layer。我们写的弹窗能不能这么方便呢,为此需要把popup改写成vue插件。
说是插件,但能配置属性调用方法的还是组件本身,具体是实例化的组件,而且这个实例必须是全局单例,这样不同vue文件唤起popup的时候才不会打架
生成单例
// plugins/popupVm.jsimport Popup from '@/components/popup'let $vmexport const factory = (Vue)=> { if (!$vm) { let Popup = Vue.extend(PopupComponent) $vm = new Popup({ el: document.createElement('div') }) document.body.appendChild($vm.$el) } return $vm}组件实例化后是添加在body上的,props不能写在html里需要js去控制,这里写个方法让属性默认值继续发挥作用
// plugins/util.jsexport const setProps = ($vm, options) => { const defaults = {} Object.keys($vm.$options.props).forEach(k => { defaults[k] = $vm.$options.props[k].default }) const _options = _.assign({}, defaults, options) for (let i in _options) { $vm.$props[i] = _options[i] }}// plugins/popupPlugin.jsimport { factory } from './popupVm'import { setProps } from './util'export default { install(Vue) { let $vm = factory(Vue); const popup = { open(options) { setProps($vm, options) //监听事件 typeof options.onShow === 'function' && $vm.$once('show', options.onShow); typeof options.onHide === 'function' && $vm.$once('hide', options.onHide); $vm.open(); }, hide() { $vm.hide() }, //只配置文字 text(text) { this.open({ text }) } } Vue.prototype.$popup = popup }}在main.js内注册插件
//main.jsimport Vue from 'vue'import PopupPlugin from '@/plugins/popupPlugin'Vue.use(PopupPlugin)在vue框架内调用就非常方便了
到此,关于"vue中如何实现一个弹窗插件"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
插件
组件
方法
属性
学习
实例
事件
全局
内容
文字
更多
帮助
控制
配置
不同
实用
累赘
为此
接下来
作用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库中的重点知识
软件开发管理维护心得
毕业就业数据库
数据库汇总数据
多功能软件开发厂家报价
大量图片存储到服务器
网络安全月主题是什么
2018河北共需网络安全
窝蜂网络技术
代理服务器 购买
数据库 scada
服务器锁插件
oppo网络安全吗
天龙八部端游服务器合区情况
怎么用app做服务器
juid数据库
黄浦区网络技术服务介绍
希宏世网络技术有限公司
h3c服务器配置管理口ip
福州飞沃网络技术
重庆网络安全工匠
sql中查询系统数据库名称
数据库的版本为851
妇联开展网络安全宣传周活动
电脑有线宽带无法连接远程服务器
在线分析基因转录的数据库
义乌明道网络技术有限公司
西安网络安全公司
数据库物理文件包括哪两部分
因网络安全事件 发生突