文件结构

component.vue

<template>
<div class="_vuedals" v-show="show">
<component v-if="options.component" :is="options.component" v-bind="options.props" v-on="options.events" ref="modalessComponent" ></component>
</div>
</template> <script>
import Bus from "./bus.js";
export default {
name:"vuedals",
data(){
return{
options:{},
show:false
}
},
created(){
var me = this;
var defval = {
props:[],
}
Bus.$on("open",function(options){
me.options = options;
me.show = true;
});
Bus.$on("close",function(options){
me.show = false;
});
},
mounted(){ },
methods:{ }
}
</script> <style>
._vuedals{
position: absolute;
top: 0;
left: 0;
z-index: 1000;
width: 100%;
height: 100%;
background: rgba(0,0,0,0.4);
}
</style>

  bus.js

let instance = null;

class EventBus {
constructor() {
if (!instance) {
this.events = {};
instance = this;
}
return instance;
} $emit(event, message) {
if (!this.events[event])
return; const callbacks = this.events[event]; for (let i = 0, l = callbacks.length; i < l; i++) {
const callback = callbacks[i]; callback.call(this, message);
}
} $on(event, callback) {
if (!this.events[event])
this.events[event] = []; this.events[event].push(callback);
}
} export default new EventBus();

  index.js

import Bus from './bus';
import Component from './component.vue'; export default {
install(Vue) {
// Global $vuedals property
Vue.prototype.$vuedals = new Vue({
name: '$vuedals', created() { },
methods: {
open(options = null) {
Bus.$emit('open', options);
}, close(data = null) {
Bus.$emit('close', data);
} }
}); Vue.component('vuedals', Component); }
};

  使用:

一、引入

import vuedals from './components/vuedals'

Vue.use(vuedals);

二、调用

import box from '../components/box.vue';

this.$vuedals.open({
component:box, //引入的模板文件
props:{title:"这是一个title"},
events:{
myEvent:function(){
console.log("myEvent....")
}
}
})

  

其中box.vue为

<template>
<div class="box">
这里是弹出层的内容
<p>{{title}}</p>
<li @click="myEvent">点击我</li>
<li @click="close">关闭弹出层</li>
</div>
</template> <script>
export default {
name: 'box',
data () {
return {
msg: ''
};
},
props:["title"],
methods: {
myEvent:function(){
this.$emit("myEvent",{});
},
close:function(){ console.log(this.$vuedals.close())
}
}
};
</script> <style>
.box{
margin: 40% auto 0;
width: 80%;
height: 200px;
background: #fff;
border-radius: 10px;
}
</style>

  效果:

vue弹窗组件的更多相关文章

  1. Vue列表组件与弹窗组件示例

    列表组件 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <me ...

  2. 从零开始徒手撸一个vue的toast弹窗组件

    相信普通的vue组件大家都会写,定义 -> 引入 -> 注册 -> 使用,行云流水,一气呵成,但是如果我们今天是要自定义一个弹窗组件呢? 首先,我们来分析一下弹窗组件的特性(需求): ...

  3. Vue - 简单实现一个命令式弹窗组件

    前言 在日常工作中弹窗组件是很常用的组件,但用得多还是别人的,空闲时间就自己来简单实现一个弹窗组件 涉及知识点:extend.$mount.$el 使用方式: this.$Confirm({ titl ...

  4. Vue.js(24)之 弹窗组件封装

    同事封装了一个弹窗组件,觉得还不错,直接拿来用了: gif图展示: 弹框组件代码: <template> <transition name="confirm-fade&qu ...

  5. 封装Vue Element的dialog弹窗组件

    我本没有想着说要封装一个弹窗组件,但有同行的朋友在问我,而且弹窗组件也确实在项目开发中用的比较多.思前想后,又本着样式统一且修改起来方便的原则,还是再为大家分享一个我所封装的弹窗组件吧. 其实,并不是 ...

  6. vue+element table的弹窗组件

    在处理表格编辑相关的需求,是需要做一个弹框进行保存的:或者查看表格数据的详细信息时,也是需要做弹窗: 当然 ,这是类似于这样的 ,当然 element 已经帮我们做好 弹窗这一块 主要 我想记录的是 ...

  7. vue的组件详解

    什么是组件 组件(Component)是 Vue.js 最强大的功能之一.(好比电脑中的每一个元件(键盘,鼠标,CPU),它是一个具有独立的逻辑和功能或界面,同时又能根据规定的接口规则进行互相融合,变 ...

  8. Vue 兄弟组件通信(不使用Vuex)

    Vue 兄弟组件通信(不使用Vuex) 项目中,我们经常会遇到兄弟组件通信的情况.在大型项目中我们可以通过引入vuex轻松管理各组件之间通信问题,但在一些小型的项目中,我们就没有必要去引入vuex.下 ...

  9. vue弹窗插件实战

    vue做移动端经常碰到弹窗的需求, 这里写一个功能简单的vue弹窗 popup.vue <template> <div class="popup-wrapper" ...

随机推荐

  1. 读《Spring源码深度解析》途中问题1

    step 1:检查自己的eclipse版本:在help->About Eclipse中查看: step 2:进入 https://github.com/groovy/groovy-eclipse ...

  2. centos 下部署django nginx+uwsgi

    为了建立一个工作站,也是麻烦了.... 感谢该博主: https://www.cnblogs.com/levelksk/p/7921066.html 1.安装centos 后首先安装python,下载 ...

  3. flume 学习总结

    flume 总结 flume 总结 下载配置安装 1 下载 2 配置安装 flume 架构 agent 配置 1 source 配置 11 监听网络端口 12 监控文件 2 channel 配置 3 ...

  4. tomcat运行模式

    Tomcat Connector的三种不同的运行模式性能相差很大 这三种模式的不同之处如下: BIO: 一个线程处理一个请求.缺点:并发量高时,线程数较多,浪费资源. Tomcat7或以下,在Linu ...

  5. 关于richtextbox改变字体颜色,加下划线

    参考了三份有用的资料: 1.关于richtextbox设置字体颜色的问题 http://biancheng.dnbcw.net/c/180381.html 2.C#Winform使用扩展方法自定义富文 ...

  6. jvm的调优

    首先我们要知道jvm的调优,主要是对那些部分的优化.通过jvm内存模型我们可以,首先是分析遇到的问题,然后通过一些工具或者手段找到问题所在,然后通过一定的措施解决问题,下面我们也将按着这个思路来给出具 ...

  7. xca自签发证书解决chrome浏览器证书不可信问题记录

    xca打开的界面 依次File, New DataBase,选择xdb文件保存路径,再输入密码 切换到Certificates页面,点击New Certificate 出现如下界面 因为要创建根证书, ...

  8. 如何在win+r 或者是win10的应用搜索输入subl就能打开sublime

    这虽然不是什么技术贴,我实在不想开启sublime还要动鼠标,或者输入subl长长的全称,这里有两种做法: 第一种 在环境变量添加sublime安装目录的变量,一般sublime的安装目录会有subl ...

  9. mv 命令

    [root@localhost soft]# .txt [root@localhost soft]# [root@localhost soft]# ls .txt [root@localhost so ...

  10. Github上Laravel开源排行榜Star数前30名

    Github上Laravel开源排行榜前30名,罗列所有 Laravel 开源扩展包,含 Github Star 数量,下载数量和项目简介.默认排序是按Star数量从多到少来排 1.cachethq/ ...