使用Vue.extend实现iview Upload在单文件上传时,拖拽多个文件给出错误提示

1. 扩展Select组件,注册新的组件(global-components.js文件中进行)

import Vue from 'vue';
import { Upload } from 'view-design';

// 扩展组件
// 拖拽文件上传时检测文件个数(单文件上传,拖拽大于一个报错)
const MyUpload = Vue.extend(Upload).extend({
  methods: {
    onDrop(e) {
      this.dragOver = false;
      if (this.itemDisabled) { return; }
      /* -- 新加 -- */
      if (!this.multiple && e.dataTransfer.files.length > 1) {
        this.$emit('onFileNumberError');
        return;
      } 
      /* -- end -- */
      this.uploadFiles(e.dataTransfer.files);
    },
  },
});

// 注册全局组件
Vue.component('my-upload', MyUpload);

2. main.js中引入上个文件

import "@/components/global-components";
···

3. 使用

<template>
      <my-upload @onFileNumberError="onFileNumberError">
            
      </my-upload>
</template>
<script>
export default {
      methods: {
            onFileNumberError() { this.$Message.error('一次只能上传单个文件') }
      }
}
</script>

用法和原Upload一样,只是多了onFileNumberError用于拖拽多个时报错

posted @ 2020-12-22 16:31  ฅ˙-˙ฅ  阅读(316)  评论(0编辑  收藏  举报