vue弹出框组件封装实例代码


Posted in Javascript onOctober 31, 2019

新学vue,参考别人封装弹出层组件。好用!

1.你需要先建一个弹出框的模板:

//首先创建一个mack.vue
<template>
 <div class="mack" v-if="isShow">
  <div class="mackWeb" :style="text.mackStyle">
   <div class="title font_b" v-if="text.title" :style="text.titleStyle">{{text.title.trim()}}</div>
   <div class="mesg font_s" v-if="text.mesg" :style="text.mesgStyle">{{text.mesg.trim()}}</div>
   <div v-html="text.cntMsg"></div>
   <div class="footb font_s">
    <div
     class="foot_l borderlf borderTop"
     @click="cancel"
     v-if="text.cancel"
     :style="text.cancelValStyle"
    >{{text.btn.cancelVal}}</div>
    <div
     class="foot_r borderTop"
     @click="confirm"
     v-if="text.confirm"
     :style="text.confirmValStyle"
    >{{text.btn.confirmVal}}</div>
   </div>
  </div>
 </div>
</template>

//写js
<script>
 export default {
  data() {
   return {
    isShow: true,
    text: {
     title: "",
     mesg: "",
     cnTmesg: "",
     cancel: true,
     confirm: true,
     mackStyle: null,
  titleStyle: null,
  mesgStyle:null,
     cancelValStyle: null,
     confirmValStyle: null,
     btn: {
      confirmVal: "确定",
      cancelVal: "取消"
     }
    }
   };
  },
  methods: {
   cancel() {
    this.isShow = false;
   },
   confirm() {
    this.isShow = false;
   }
  }
};
</script>

//css
<style scoped lang='less'>
 .mack {
 position: fixed;
 width: 100%;
 height: 100%;
 overflow: hidden;
 top: 0;
 left: 0;
 background: rgba(21, 21, 21, 0.7);
 .font_b {
  font-size: 14/50rem;
  color: #231a2f;
 }
 .font_s {
  font-size: 12/50rem;
  color: #655a72;
 }
 .borderTop {
  border-top: 1/50rem solid #e4e4e4;
 }
 .mackWeb {
  background: #ffffff;
  width: 300/50rem;
  min-width: 300/50rem;
  margin: auto;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  .title {
   text-align: center;
   padding: 15/50rem 15/50rem 0 15/50rem;
  }
  .mesg {
   padding: 15/50rem;
   text-align: center;
  }
  .footb {
   display: inline-table;
   width: 100%;
   .borderlf {
    border-right: 1/50rem solid #e4e4e4;
   }
   div {
    display: table-cell;
    box-sizing: border-box;
    text-align: center;
    padding: 10/50rem 0;
   }
  }
 }
}
</style>

2.接着你需要一个js:mackjs.js

import Vue from 'vue';
import confirm from './mack';
let confirmConstructor = Vue.extend(confirm);
let theConfirm = function (text) {
  return new Promise((res, rej) => { //promise封装,ok执行resolve,no执行rejectlet
   let confirmDom = new confirmConstructor({  
    el: document.createElement('div')
   })
   document.body.appendChild(confirmDom.$el); //new一个对象,然后插入body里面
   confirmDom.text = Object.assing( confirmDom.text,text);  //为了使confirm的扩展性更强,这个采用对象的方式传入,所有的字段都可以根据需求自定义
   confirmDom.ok = function () {
    res()
    confirmDom.isShow = false
   }
   confirmDom.close = function () {
    rej()
    confirmDom.isShow = false
   }
  })
 }
 export default theConfirm; 
  //暴露出去,别忘记挂载到vue的原型上 
  //  => 在main.js里面先引入 import theConfirm from './components/confirm/confirm.js'
  //  => 再挂载 Vue.prototype.$confirm = theConfirm;
  //在需要的地方直接用以下方法调用即可:
  //  this.$confirm({
  //   type:'提示',
  //   msg:'是否删除这条信息?',
  //   btn:{
  //     ok:'yes',
  //     no:'no'
  //   }
  // }).then(() => {
  //   console.log('ok')
  // })
  // .catch(() => {
  //   console.log('no')
  // })

-3.你接着需要在main.js导入这个文件

import macksjs from './assets/mackjs'
Vue.prototype.$confirm= macksjs ;

-4.最后在你需要引入的vue文件中直接调用就好了

<button @click="deleteaas">我是弹出框</button>
 methods:{
  deleteaas() {
   this.$confirm({
    title: "addd",
    mesg: "您确定不再关注该客户吗?",
    cntMsg: '<div class="helAA">你好</div>',
    cancelValStyle:{color:'red'},
    btn: {
     confirmVal: "确a定",
     cancelVal: "取a消"
    }
   })
    .then(() => {
     console.log("yes");
     //点击确定之后的处理
    })
    .catch(() => {
     console.log("no");
    });
  }
 }

导入

总结

以上所述是小编给大家介绍的vue弹出框组件封装实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
jQuery入门第一课 jQuery选择符
Mar 14 Javascript
谈谈JavaScript中的函数与闭包
Apr 14 Javascript
js中单引号与双引号冲突问题解决方法
Oct 04 Javascript
js父页面与子页面不同时显示的方法
Oct 16 Javascript
jQuery中:reset选择器用法实例
Jan 04 Javascript
理解JavaScript表单的基础知识
Jan 25 Javascript
jQuery.uploadify文件上传组件实例讲解
Sep 23 Javascript
AngularJs验证重复密码的方法(两种)
Nov 25 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
Apr 21 Javascript
React Native中NavigatorIOS组件的简单使用详解
Jan 27 Javascript
解决webpack无法通过IP地址访问localhost的问题
Feb 22 Javascript
说说node中的可读流和可写流的区别
Jun 01 Javascript
使用zrender.js绘制体温单效果
Oct 31 #Javascript
初学vue出现空格警告的原因及其解决方案
Oct 31 #Javascript
selenium+java中用js来完成日期的修改
Oct 31 #Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
Oct 31 #Javascript
vue项目出现页面空白的解决方案
Oct 31 #Javascript
vue项目引入ts步骤(小结)
Oct 31 #Javascript
微信小程序canvas分享海报功能
Oct 31 #Javascript
You might like
mysql5详细安装教程
2007/01/15 PHP
php下获取客户端ip地址的函数
2010/03/15 PHP
php查看当前Session的ID实例
2015/03/16 PHP
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
用Javascript来生成ftp脚本的小例子
2013/07/03 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
JavaScript导出Excel实例详解
2014/11/25 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
详解js类型判断
2018/05/22 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
Python实现屏幕截图的两种方式
2018/02/05 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
python 把列表转化为字符串的方法
2018/10/23 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
PyQt5实现QLineEdit添加clicked信号的方法
2019/06/25 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
Python自动化完成tb喵币任务的操作方法
2019/10/30 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
python实现将字符串中的数字提取出来然后求和
2020/04/02 Python
管理专员自荐信
2014/01/26 职场文书
医院学雷锋活动策划方案
2014/02/15 职场文书
活动总结书
2014/05/08 职场文书
动物科学专业求职信
2014/07/27 职场文书
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
环卫个人总结
2015/03/03 职场文书
PyTorch的Debug指南
2021/05/07 Python
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技
微信小程序调用python模型
2022/04/21 Python