7、vue2.0用Vue.extend构建消息提示组件的方法实例实现alert模态框组件(2)
来源:互联网 发布:sql更新字段部分值 编辑:程序博客网 时间:2024/06/06 19:29
话不多说直接上源码 喜欢的点赞哦
alert.vue组件
<style> .header{ font-size:0.85rem;margin:0 0 0 0;margin-top:1.3rem; } .message{ font-size:0.8rem;color: #333;margin:0; padding:0.45rem 0.75rem 1.3rem 0.75rem; line-height:1.2rem }</style><template> <div class="fd_alert"> <div class="mask" style="opacity:0.2;" v-if="visible"> </div> <div class="alert" v-if="visible"> <p class="message">{{message}}</p> <div class="btn-group "> <button class="btn secondary" @click="handleActions('cancel')">{{cancelButtonText}}</button><button class="btn secondary" @click="handleActions('confirm')">{{confirmButtonText}}</button> </div> </div> </div></template><script> var CONFIRM_TEXT = '确定'; var CANCEL_TEXT = '取消'; export default{ name:'Alert', props:{ confirmButtonText: { // 可选字段,有默认值 default: CONFIRM_TEXT }, }, methods:{ handleActions(action){ var callback = this.callback; this.visible = false; callback(action); } }, data(){ return{ message:'', cancelButtonText:CANCEL_TEXT , visible :true, duration:"", callback:null } }, }</script>
alert.js
const CONFIRM_TEXT = '确定';const CANCEL_TEXT = '取消';var defaults = { title: '', message: '', confirmButtonText: CONFIRM_TEXT, cancelButtonText: CANCEL_TEXT, btn:true, cancelButtonShow:true, btnwidth:"50%", duration:"3000", num:"", activeColor: '#ff8208', showCancelButton:true};import Vue from 'vue';import alertvue from './alert.vue';var merge = function(target) { for (var i = 1, j = arguments.length; i < j; i++) { var source = arguments[i]; for (var prop in source) { if (source.hasOwnProperty(prop)) { var value = source[prop]; if (value !== undefined) { target[prop] = value; } } } } return target;};var alertConstructor = Vue.extend(alertvue);var currentMsg, instance,duration;var msgQueue = [];var initInstance = function() { instance = new alertConstructor({ el: document.createElement('div') }); instance.callback = function(action) { var callback = currentMsg.callback; callback(action); };};var showNextMsg = function(options) { initInstance(); if (msgQueue.length > 0) { currentMsg = msgQueue.shift(); var options = currentMsg.options; for (var prop in options) { if (options.hasOwnProperty(prop)) { instance[prop] = options[prop]; } } if(!options.btn){ duration = options.duration } // instance.$appendTo(document.body); document.body.appendChild(instance.$el); Vue.nextTick(() => { instance.visible = true; if(!options.btn){ setTimeout(()=>{ instance.$remove(); var callback = currentMsg.callback; callback("duration"); },duration) } }); }};var alert = function(options, callback) { msgQueue.push({ options: merge({}, defaults, alert.defaults || {}, options), callback: callback }); showNextMsg(options);};export default alert;export { alert };
父组件页面
<template> <div @click='fd_alert'>alert</div></template><script> import Alert from '../components/alert/alert.js' export default{ data(){ return{ } }, methods:{ fd_alert(){ var vm = this; Alert({ confirmButtonText:'否', cancelButtonText:'是', message: '是否确认删除', handleActions:function (key) { this.visible = false; if(key=='cancel'){ vm.cancel(); }else if(key == 'confirm'){ vm.confirm(); } } }); }, cancel(){ alert('是'); }, confirm(){ alert('否') } } }</script><style></style>
阅读全文
1 0
- 7、vue2.0用Vue.extend构建消息提示组件的方法实例实现alert模态框组件(2)
- 6、用vue2.0extend写alert模态框弹窗组件
- vue开发:vue2.0父子组件及非父子组件之间的通信方法
- 【Vue】 vue2.0父子组件传递函数
- 用vue实现模态框组件
- 用vue实现模态框组件
- 用vue实现模态框组件
- 用vue实现模态框组件
- vue用组件构建应用
- Vue2.0与 [百度地图] 结合使用———vue+webpack+axios+百度地图实现组件之间的通信
- Vue2.0与 [百度地图] 结合使用———vue+webpack+axios+百度地图实现组件之间的通信
- vue---vue2.x中如何异步加载路由组件,webpack+vue实现组件懒加载
- 9、vue2.0子组件触发父组件的方法,父组件接收子组件的方法
- vue.js之路(4)——vue2.0s中eventBus实现兄弟组件通信
- 消息提示组件ymPrompt4.0
- vue2.0 .vue文件非父子组件传值问题
- 使用信息提示组件 Alert
- Vue2.0组件实现动态搜索引擎(一)
- 74161设计二十进制计数器
- 度量学习(metric learning)
- 代码重构----使用java有限状态机来消除太多的if else判断
- 内部网络关于IaaS 建设的说明
- 手把手教你用git,非常详细,轻易上手
- 7、vue2.0用Vue.extend构建消息提示组件的方法实例实现alert模态框组件(2)
- 选择排序
- LCA模板 Tarjan
- Java 获取文件的MIME类型
- java 命令执行jar 或 class main
- android studio httpclient
- 最小的k个数 剑指office原题
- Java通过QQ邮箱发送邮件
- kmp 模板