上一篇文章Vue自定义全局弹出提示(Toast)组件_qqq6654066的博客-CSDN博客这里说到了怎么在全局定义一个toast组件弹出文字信息,但是如果想要弹出一个自定义页面那应该怎么写呢?
首先新建一个我们希望弹出的页面组件
<template> <div class="tips">{{text}}</div> </template> <script> export default { name: 'tips', data(){ return{ text:"" } } } </script> <style> .tips{ height: 50px; position: absolute; top: 50%; left: 50%; padding: 10px; border-radius: 15px; background-color: #DDDDDD; text-align: center; line-height: 50px; } </style>
然后再新建toast组件文件
export default { // 注册Toast install(Vue) { Vue.prototype.$Toast = (view, opts,duration) => { // 生成一个Vue的子类 let toastTpl = Vue.extend(view); // 生成一个该子类的实例 let tpl = new toastTpl().$mount(); // 并将此div加入全局挂载点内部 document.body.appendChild(tpl.$el); // 把参数放进去 tpl = Object.assign(tpl, opts) // 定时消失 setTimeout(() => { document.body.removeChild(tpl.$el); }, duration) } } }
然后在main.js中引入toast
然后就可以在任意页面中使用了,使用方法如下
首先引入想要弹出的组件,然后在通过引用全局的Toast组件弹出,第一个参数是页面,第二个参数是对象类型,可以放弹出组件中需要的参数,第三个参数是多少秒后消失
最终效果图
需要源码的同学可以在这里下载
https://github.com/nicedays/globleToastCom