简单介绍一下vue中常用dialog组件的封装:
实现动态传入内容,实现取消,确认等回调函数。
首先写一个基本的弹窗样式,如上图所示。
在需要用到弹窗的地方中引入组件:
import dialogBar from './dialog.vue' components:{ 'dialog-bar': dialogBar, }, <dialog-bar></dialog-bar>
点击一个按钮显示弹窗,并保证关闭弹窗后再次点击依旧显示
在弹窗组件中定义一个value值:v-model="sendVal",sendVal初始值为false。
在打开弹窗的方法中赋值:
openMask(){ this.sendVal = true; }
在dialog.vue组件中做如下操作:
props: { value: {} // 注意此处获取的value对应的就是组件标签中的v-model }
定义一个showMask变量用于控制是否显示弹窗
mounted(){ this.showMask = this.value; // 在生命周期中,把获取的value值获取给showMash }, watch:{ value(newVal, oldVal){ this.showMask = newVal; // 监测value的变化,并赋值。 }, showMask(val) { this.$emit('input', val); // 此处监测showMask目的为关闭弹窗时,重新更换value值,注意emit的事件一定要为input。 } },
而要想关闭弹窗,只需要定义一个方法:
closeMask(){ this.showMask = false; },
此刻已经可以实现弹窗的显示与退出。
下面我们要实现的是动态添加标题,内容等,在组件标签中加入title,content:
<dialog-bar title="我是标题" content="我是内容"></dialog-bar>
可以运用vue的数据双向绑定,更换title,content。
在dialog.vue中获取内容:
props: { value: {}, content: { type: String, default: '' }, title: { type: String, default: '' }, }, <div class="dialog-title">{{title}}</div> <div class="content" v-html="content"></div>
我们可以运用同样的原理来获取不同按钮中的自定名称。
下面我们利用传入的不同type来确定不同的按钮,并提供不同的回调函数。
<dialog-bar title="我是标题" content="我是内容" type="danger" dangerText="这是删除按钮"></dialog-bar>
如传入type为danger,我们可以在dialog.vue中props获取type,并定义一个如下按钮:
<div v-if="type == 'danger'" class="danger-btn" @click="dangerBtn"> {{dangerText}} </div> dangerBtn(){ this.$emit('danger'); // 发送一个danger事件作为回调函数 this.closeMask(); // 关闭弹窗 },
在标签中定义danger的回调并做一些操作:
<dialog-bar title="我是标题" content="我是内容" type="danger" dangerText="这是删除按钮" @danger="clickDanger()"></dialog-bar> clickDanger(){ console.log("这里是回调函数") },
同样原理可以获取和增添一些其他的操作:
props: { value: {}, // 类型包括 defalut 默认, danger 危险, confirm 确认, type:{ type: String, default: 'default' }, content: { type: String, default: '' }, title: { type: String, default: '' }, confirmText: { type: String, default: '确认' }, cancelText: { type: String, default: '取消' }, dangerText: { type: String, default: '删除' }, }, <div class="btns"> <div v-if="type != 'confirm'" class="default-btn" @click="closeBtn"> {{cancelText}} </div> <div v-if="type == 'danger'" class="danger-btn" @click="dangerBtn"> {{dangerText}} </div> <div v-if="type == 'confirm'" class="confirm-btn" @click="confirmBtn"> {{confirmText}} </div> </div>
点击此处去github下载弹窗代码: https://github.com/wwjhzc/vue-dialog
总结
以上所述是小编给大家介绍的使用vue实现各类弹出框组件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
本文向大家介绍Vue组件化开发之通用型弹出框的实现,包括了Vue组件化开发之通用型弹出框的实现的使用技巧和注意事项,需要的朋友参考一下 本文主要分享关于组件化开发的理解,让刚入门的小伙伴少走一些弯路,提高开发效率,作者本人也是新手,如有不当之处,请大佬指出,感谢。 相信很多刚入门的小伙伴,经常会写很多重复的代码,而这些代码一般情况下也都是大同小异,在这种情况下,如何让开发和学习变得更加高效,组件化
本文向大家介绍vue弹出框组件封装实例代码,包括了vue弹出框组件封装实例代码的使用技巧和注意事项,需要的朋友参考一下 新学vue,参考别人封装弹出层组件。好用! 1.你需要先建一个弹出框的模板: 2.接着你需要一个js:mackjs.js -3.你接着需要在main.js导入这个文件 -4.最后在你需要引入的vue文件中直接调用就好了 导入 总结 以上所述是小编给大家介绍的vue弹出框组件封装实
本文向大家介绍详解用vue编写弹出框组件,包括了详解用vue编写弹出框组件的使用技巧和注意事项,需要的朋友参考一下 前言 最近研究了用vue编写弹出框的组件,发现其实这里面的门道还是有很多的。这篇文完全是用来记录总结下最近的学习成果,同时也希望能够帮得上正在学习纠结的你~ps:本文假设你已经了解vue2.0相关框架,因此适合有一定vue2.0基础的同学阅读。 设计组件的思考 其实单纯的编写一个弹出
本文向大家介绍vue组件实现弹出框点击显示隐藏效果,包括了vue组件实现弹出框点击显示隐藏效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了vue实现弹出框点击显示隐藏的具体代码,供大家参考,具体内容如下 效果如下图 由于我的更改密码弹出框是一个组件引用的,所以在一开始是隐藏的,这就需要在当前的页面上对弹出框组件设置v-show,但是在弹出框显示出来的时候,操作执行完后当前页面
本文向大家介绍JS组件Bootstrap实现弹出框和提示框效果代码,包括了JS组件Bootstrap实现弹出框和提示框效果代码的使用技巧和注意事项,需要的朋友参考一下 前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑。在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的系统有一个友好的弹出提示框,自然
本文向大家介绍Vue $mount实战之实现消息弹窗组件,包括了Vue $mount实战之实现消息弹窗组件的使用技巧和注意事项,需要的朋友参考一下 之前的项目一直在使用Element-UI框架,element中的Notification、Message组件使用时不需要在html写标签,而是使用js调用。那时就很疑惑,为什么element ui使用this.$notify、this.$message