• 组件toast(类似于element-ui的message组件)的实现


    实现的toast组件可以通过this.$toast()调用

    需要的知识:

    vue.extend();

    new Vue().$mount(); //如果mount内没有要挂载的元素vue只会渲染元素而不会加载的界面上

    toast.vue的内容

    <!--template的内容-->
    <template>
        <div>
            <slot>{{message}}</slot>
        </div>
    </template>
    //script的内容
    export default {
        name: 'toast',
        data(){
            return {
                duration: 1500, //默认toast消失的时间
                message: '', //toast显示的内容
            }
        },
        mounted(){
            setTimeout(()=>{
                this.$destroy(true);
                this.$el.parentNode.removeChild(this.$el);
            }, this.duration)
        }
    }

    toast.js的内容

    import Vue from 'vue';
    import toast from './toast.vue';
    
    let ToastConstructor = Vue.extend(Toast);
    
    let instance;
    let instances = [];
    
    const Toast = function(options) {
        if (Vue.prototype.$isServer) return;
        options = options || {};
        if (typeof options === 'string') {
            options = {
                message: options
            };
        }
        instance = new ToastConstructor({
            data: options
        });
        instance.id = id;
        instance.$slots.default = [instance.message];
        instance.message = null;
        instance.vm = instance.$mount();
        document.body.appendChild(instance.vm.$el);
        
        instance.vm.visible = true;
        instance.dom = instance.vm.$el;
        instances.push(instance);
        return instance.vm;
    };
    
    export default Toast;
  • 相关阅读:
    关于第一次作业表达式求导总结
    北航OO第一单元总结
    OO课程总结
    OO第三次博客
    OO第二次博客
    OO第一次博客
    OO第一单元总结——多项式求导
    [面向对象]电梯作业优化相关
    面向对象的程序设计-模块一课程总结
    OO第二单元总结——电梯
  • 原文地址:https://www.cnblogs.com/guojikun/p/10767614.html
Copyright © 2020-2023  润新知