美文网首页Vue知识点总结
Vue.extend构造函数的使用--实现alert方法

Vue.extend构造函数的使用--实现alert方法

作者: 柯柯熙 | 来源:发表于2018-01-03 17:21 被阅读112次

    由于项目中经常会用到alert这种组件,这种组件一般是在js中被调用,vue中组件主要是使用了标签的形式,
    现记录通过Vue.extend实现的动态组件
    Vue-extend官网链接

    官网案例
    // 创建实例
    var Profile = Vue.extend({
      template: '<p>{{firstName}} {{lastName}} aka {{alias}}</p>',
      data: function () {
        return {
          firstName: 'Walter',
          lastName: 'White',
          alias: 'Heisenberg'
        }
      }
    })
    // 创建 Profile 实例,并挂载到一个元素上。
    new Profile().$mount('#mount-point')
    
    alert实例开发

    官网的案例还是很清楚的,现在我们给予官网的实例拓展alert组件如何开发。
    我们需要新建一个目录,目录中有俩个文件index.js和main.vue

    main.vue
    <template>
      <transition name="el-message-fade">
        <div  v-show="visible" class="my-msg">{{message}}</div>
      </transition>
    </template>
    
    <script  >
      export default{
        data(){
          return{
            message:'',  //需要提示用户的内容
            visible:true //线上与隐藏
          }
        },
        methods:{
          close(){
            setTimeout(()=>{
              this.$emit("results","test"); // 自定义方法         
              this.visible = false; // 隐藏元素
              this.$el.remove(); // 移除DOM
            },2000)
          },
        },
        mounted() {
          this.close();
        }
      }
    </script>
    
    
    index.js
    import Vue from 'vue';
    import main from './main.vue';
    let MyAlertConstructor = Vue.extend(main);
    let instance;
    var MyAlert=function(message){ //自定义传入的参数
      // 创建实例并且过滤参数
      instance= new MyAlertConstructor({
        data:{
          message:message
        }})
      // 挂载实例
      instance.$mount();
      document.body.appendChild(instance.$el)
      return instance;
    }
    export default MyAlert;
    
    
    使用
    import Hint from '../brick/Hint/index.js'
    Hint({name : 'name'}).$on('results', (text) => {
            console.log(text);
          });
    

    相关文章

      网友评论

        本文标题:Vue.extend构造函数的使用--实现alert方法

        本文链接:https://www.haomeiwen.com/subject/vjxknxtx.html