用Vue.extend构建消息提示组件的方法实例


Posted in Javascript onAugust 08, 2017

前提

前段时间自己做的vue练手项目,需要一个通用的消息提示组件,但是消息提示这种组件我更想用方法来调用,而不是在各个页面上都添加个组件(那样感觉很麻烦,重度懒癌患者),于是就上网差查了查,并研究了ElementUI的message源码。自己弄出来一个简陋的消息提示组件

Vue.extend是什么

用Vue.extend构建消息提示组件的方法实例

按照官方文档说法,他是一个类构造器,用来创建一个子类vue并返回构造函数,而Vue.component它的任务是将给定的构造函数与字符串ID相关联,以便Vue.js可以在模板中接收它。
了解了这点之后我们开始做我们的消息提示组件吧。

消息提示组件

首先我们先创建我们的提示组件的模板

<template>
  <transition name="message-fade">
    <div class="message" v-show="show">
    <span class="icon"><icon name="info"></icon></span>
      <p>{{message}}</p>
    </div>
  </transition>
</template>

<script>
  export default {
    name: 'v-message',
    mounted(){
      this.StartTime();
    },
    data(){
      return {
        message: '123',
        show: false,
        timer: null
      }
    },
    methods:{
      StartTime(){
        this.show = true;
        if(this.timer){
          clearTimeOut(this.timer)
        }else{
          this.timer = setTimeout(()=>{
            this.show = false
          }, 3000);
        }
      }
    }
  }
</script>

之后我们需要用将message.vue传到Vue.extend()里

import Vue from 'vue';
let MessageBox = Vue.extend(require('./message.vue'));
let instance;
var message = function(options){
  if(typeof options === 'string'){
    options = {
      message: options
    }
  }
  //生成组件
  instance = new MessageBox({
    data: options
  })
  //组件需要挂载在dom元素上
  instance.vm = instance.$mount();
  //根据不同的类型,设置不同消息的背景颜色
  if(options.type){
    instance.vm.$el.children[0].className += ` icon__${options.type}`;
  }
  document.body.appendChild(instance.vm.$el);
  return instance.vm;
}

const type = ['success', 'info', 'warning', 'error'];
type.forEach((type)=>{
  message[type] = options =>{
    if(typeof options === 'string'){
      options = {
        message: options
      }
    }
    options.type = type;
    return message(options);
  }
})

export default message;

之后用挂在全局方法上,之后用this.$message()方法调用

vue.prototype.$message = message;

最后的效果图

用Vue.extend构建消息提示组件的方法实例

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

Javascript 相关文章推荐
Jquery+WebService 校验账号是否已被注册的代码
Jul 12 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
Nov 22 Javascript
JavaScript打印网页指定区域的例子
May 03 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
Dec 14 Javascript
node.js中debug模块的简单介绍与使用
Apr 25 Javascript
javascript中神奇的 Date对象小结
Oct 12 Javascript
js判断输入框不能为空格或null值的实现方法
Mar 02 Javascript
vue.js层叠轮播效果的实例代码
Nov 08 Javascript
angular 实现下拉列表组件的示例代码
Mar 09 Javascript
vue router 跳转时打开新页面的示例方法
Jul 28 Javascript
jQuery HTML设置内容和属性操作实例分析
May 20 jQuery
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
May 25 Vue.js
基于Vue实现页面切换左右滑动效果
Jun 29 #Javascript
VUE实现表单元素双向绑定(总结)
Aug 08 #Javascript
ES6模块化的import和export用法方法总结
Aug 08 #Javascript
Vue项目中quill-editor带样式编辑器的使用方法
Aug 08 #Javascript
webpack 2.x配置reactjs基本开发环境详解
Aug 08 #Javascript
vue-quill-editor实现图片上传功能
Aug 08 #Javascript
vue.js评论发布信息可插入QQ表情功能
Aug 08 #Javascript
You might like
解析php中static,const与define的使用区别
2013/06/18 PHP
php 批量生成html,txt文件的实现代码
2013/06/26 PHP
百度ping方法使用示例 自动ping百度
2014/01/26 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
Yii2框架中日志的使用方法分析
2017/05/22 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
JavaScript学习笔记之JS事件对象
2015/01/22 Javascript
JS网页在线获取鼠标坐标值的方法
2015/02/28 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
vue2.0数据双向绑定与表单bootstrap+vue组件
2017/02/27 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
2021/03/02 Javascript
使用paramiko远程执行命令、下发文件的实例
2017/10/01 Python
浅谈Python中range和xrange的区别
2017/12/20 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
python实现决策树分类(2)
2018/08/30 Python
python的pip安装以及使用教程
2018/09/18 Python
Python利用递归实现文件的复制方法
2018/10/27 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
2018/11/21 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
HTML5 Canvas——用路径描画线条实例介绍
2013/06/09 HTML / CSS
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
满月酒答谢词
2014/01/14 职场文书
《有趣的发现》教学反思
2014/04/15 职场文书
公务员年度考核个人总结
2015/02/12 职场文书
应聘教师求职信范文
2015/03/20 职场文书
合作意向书怎么写
2019/06/24 职场文书
php引用传递
2021/04/01 PHP
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js