elementui的upload必传检验

elementui的upload必传检验

el-upload在rules里面绑定的不是fileList,而是ref的值

<template>
  <div class="box">
    <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm" size="mini">
      <el-form-item label="数据源" prop="myfile">
        <el-upload class="upload-demo" action="" ref="myfile" :file-list="ruleForm.fileList" :auto-upload="false" :on-change="uploadChange">
          <el-button slot="trigger" size="mini" type="primary">选取文件</el-button>
        </el-upload>
      </el-form-item>
      <el-form-item label="测试集名称" prop="collectionName">
        <el-input v-model="ruleForm.collectionName" size="mini"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button size="mini" type="primary" @click="saveDialog">保存</el-button>
      </el-form-item>

    </el-form>
  </div>
</template>
<script>
export default {
  data(){
    return{
      ruleForm:{
        fileList:[],
        collectionName:''
      },
      rules:{
        myfile:[//注意这里是upload的ref绑定的值
          {required:true,validator:this.validateFiles}
        ],
        collectionName:[
          {required:true,message:'请选择测试集名称',trigger:"change"}
        ]
      }
    }
  },
  methods:{
    saveDialog(){
       this.$refs.ruleForm.validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
            return false;
          }
        });
    },
    uploadChange(file,fileList){
      if(fileList.length&&fileList.length>=1){
        this.$refs.ruleForm.validateField("myfile")
      }
      if(fileList.length>1){
        fileList.splice(0,1)
      }
    },
    validateFiles(rule,value,callback){
      let files=this.$refs.myfile.uploadFiles;
      if(!files.length){
        callback(new Error("请选择要上传的文件!"))
      }
      callback()
    }
  }
}
</script>
<style lang="less">
.box{
  width: 400px;
}
</style>

效果:
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值