Vue知识点总结

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

2018-01-03  本文已影响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);
      });
上一篇下一篇

猜你喜欢

热点阅读