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 相关文章推荐
一个tab标签切换效果代码
Mar 27 Javascript
Js如何判断客户端是PC还是手持设备简单分析
Nov 22 Javascript
JS按字节截取字符长度实例
Nov 20 Javascript
javascript 获取iframe里页面中元素值的方法
Feb 17 Javascript
javascript实现左右控制无缝滚动
Dec 31 Javascript
详解JavaScript正则表达式中的global属性的使用
Jun 16 Javascript
javascript的replace方法结合正则使用实例总结
Jun 16 Javascript
Bootstrap基本组件学习笔记之导航(10)
Dec 07 Javascript
Vue项目自动转换 px 为 rem的实现方法
Oct 29 Javascript
js中怎么判断两个字符串相等的实例
Jan 17 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
May 12 Javascript
Vue实现验证码功能
Dec 03 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
php中ob函数缓冲机制深入理解
2015/08/03 PHP
使用PHP实现生成HTML静态页面
2015/11/18 PHP
javascript GUID生成器实现代码
2009/10/31 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
JS获取select-option-text_value的方法
2013/12/26 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
js实现仿Windows风格选项卡和按钮效果实例
2015/05/13 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
jquery对所有input type=text的控件赋值实现方法
2016/12/02 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
babel的使用及安装配置教程
2018/02/22 Javascript
Vue 数组和对象更新,但是页面没有刷新的解决方式
2019/11/09 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
详解React 元素渲染
2020/07/07 Javascript
Django migrations 默认目录修改的方法教程
2018/09/28 Python
pygame游戏之旅 python和pygame安装教程
2018/11/20 Python
numpy.random模块用法总结
2019/05/27 Python
TensorFlow 显存使用机制详解
2020/02/03 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
Travelstart沙特阿拉伯:廉价航班、豪华酒店和实惠的汽车租赁优惠
2019/04/06 全球购物
艺术设计专业个人求职信范文
2013/12/11 职场文书
生产班组长岗位职责
2014/01/05 职场文书
保护母亲河倡议书
2014/04/14 职场文书
信息技术课后反思
2014/04/27 职场文书
工商企业管理应届生求职信
2014/05/04 职场文书
公司副总经理任命书
2014/06/05 职场文书
税务干部群众路线教育实践活动对照检查材料
2014/09/20 职场文书
群众路线个人剖析材料及整改措施
2014/11/04 职场文书
2015新年寄语(一句话)
2014/12/08 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL