VUE 注册全局函数组件,通过 this.$XXX()调用

  1. plugins/uploadFile/index.js

    import Vue from 'vue';
    import UploadTool from '@/components/uploadTool';
    let uploadFileInstance = null;
    let init = () => {
      let uploadFileConstructor = Vue.extend(UploadTool);
      // 构造函数可以传参,data,method
      uploadFileInstance = new uploadFileConstructor({});
      uploadFileInstance.$mount();
      document.body.appendChild(uploadFileInstance.$el);
    }
    let caller = (options) => {
      if(!uploadFileInstance) {
        init(options);
      }
      // uploadTool.vue 中使用getParams接收调用时传入的参数。 type: image等
      uploadFileInstance.getParams(options);
    }
    export default {
      install(Vue) {
        Vue.prototype.$uploadTool = caller;
      }
    }
    
  2. /components/uploadTool.vue

    
    
    
  1. XXX.vue 中使用

    // 使用
    startChooseFile() {
      this.$uploadTool({
        msg: "upload", // uploadTool can get "upload" from options.msg
        callBack: (data) => {
          // get file info here
          // ...
        }
      })
    }
    

这样一个简单的全局方法就注册完毕了,想要使用的时候可以直接 this.$uploadTool() 调用,不必在页面 import ,然后声明组件,适合常用的但是功能简单而且主要是JS操作逻辑的功能。

你可能感兴趣的:(VUE 注册全局函数组件,通过 this.$XXX()调用)