经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » Vue.js » 查看文章
最简单的vue消息提示全局组件的方法
来源:jb51  时间:2019/6/17 8:40:39  对本文有异议

简介

实现功能

  • 自定义文本
  • 自定义类型(默认,消息,成功,警告,危险)
  • 自定义过渡时间

使用vue-cli3.0生成项目

toast全局组件编写

/src/toast/toast.vue

  1. <template>
  2. <div class="app-toast"
  3. v-if="isShow"
  4. :class="{'info': type=== 'info','success': type=== 'success','wraning': type=== 'wraning','danger': type=== 'danger'}">{{text}}</div>
  5. </template>
  6. <style scoped>
  7. .app-toast {
  8. position: fixed;
  9. left: 50%;
  10. top: 50%;
  11. background: #ccc;
  12. padding: 10px;
  13. border-radius: 5px;
  14. transform: translate(-50%, -50%);
  15. color: #fff;
  16. }
  17. .info {
  18. background: #00aaee;
  19. }
  20. .success {
  21. background: #00ee6b;
  22. }
  23. .wraning {
  24. background: #eea300;
  25. }
  26. .danger {
  27. background: #ee000c;
  28. }
  29. </style>

/src/toast/index.js

  1. import vue from 'vue'
  2. import toastComponent from './toast.vue'
  3.  
  4. // 组件构造器,构造出一个 vue组件实例
  5. const ToastConstructor = vue.extend(toastComponent)
  6.  
  7. function showToast ({ text, type, duration = 2000 }) {
  8. const toastDom = new ToastConstructor({
  9. el: document.createElement('div'),
  10. data () {
  11. return {
  12. isShow: true, // 是否显示
  13. text: text, // 文本内容
  14. type: type // 类型
  15. }
  16. }
  17. })
  18. // 添加节点
  19. document.body.appendChild(toastDom.$el)
  20. // 过渡时间
  21. setTimeout(() => {
  22. toastDom.isShow = false
  23. }, duration)
  24. }
  25. // 全局注册
  26. function registryToast () {
  27. vue.prototype.$toast = showToast
  28. }
  29.  
  30. export default registryToast

全局注册

/main.js

  1. import toastRegistry from './toast/index'
  2. Vue.use(toastRegistry)

调用

/src/views/home.vue

  1. <template>
  2. <div class="home">
  3. <input type="button"
  4. value="显示弹窗"
  5. @click="showToast">
  6. </div>
  7. </template>
  8.  
  9. <script>
  10.  
  11. export default {
  12. name: 'home',
  13. methods: {
  14. showToast () {
  15. this.$toast({
  16. text: '我是消息'
  17. // type: 'wraning',
  18. // duration: 3000
  19. })
  20. }
  21. }
  22. }
  23. </script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号