美文网首页
Vue 双向绑定

Vue 双向绑定

作者: 老中医167788 | 来源:发表于2023-08-07 15:42 被阅读0次

    父页面引用

    <ImagePreviewAndUpload v-model="addStationDialog.RuleForm.deliveryCompanyLogo"
                          @uploadSuccess="onHandleAddCompanyLogo"/>
    

    回调方法

    onHandleAddCompanyLogo(val){
            this.addStationDialog.RuleForm.deliveryCompanyLogo = val
    },
    

    自定义组件

    <template>
      <div>
        <el-upload
          class="avatar-uploader"
          action="https://jsonplaceholder.typicode.com/posts/"
          :show-file-list="false"
          :on-success="handleAvatarSuccess"
          :before-upload="beforeAvatarUpload">
          <img v-if="imageUrl" :src="imageUrl" class="avatar">
          <i v-else class="el-icon-plus avatar-uploader-icon"></i>
        </el-upload>
      </div>
    </template>
    <script>
    export default {
      name: 'ImagePreviewAndUpload',
      props:['value'],
      data(){
        return{
          imageUrl:this.value,
        }
      },
      methods: {
        handleAvatarSuccess(res, file) {
          this.imageUrl = URL.createObjectURL(file.raw);
          this.$emit('uploadSuccess',this.imageUrl)
        },
        beforeAvatarUpload(file) {
          const isGIF = file.type === 'image/gif';
          const isJPG = file.type === 'image/jpeg';
          const isPNG = file.type === 'image/png';
          const isLt2M = file.size / 1024 / 1024 < 2;
    
          if(!isJPG && !isPNG && !isGIF) {
            this.$message.error('上传头像图片只能是 JPG,PNG,GIF 格式!');
          }
          if(!isLt2M) {
            this.$message.error('上传头像图片大小不能超过 2MB!');
          }
          return (isJPG || isPNG || isGIF) && isLt2M;
        }
      }
    }
    </script>
    <style>
    .avatar-uploader .el-upload {
      border: 1px dashed #d9d9d9;
      border-radius: 6px;
      cursor: pointer;
      position: relative;
      overflow: hidden;
    }
    .avatar-uploader .el-upload:hover {
      border-color: #409EFF;
    }
    .avatar-uploader-icon {
      font-size: 28px;
      color: #8c939d;
      width: 100px;
      height: 100px;
      line-height: 100px;
      text-align: center;
    }
    .avatar{
      width: 100px;
      height: 100px;
      display: block;
    }
    </style>
    
    

    相关文章

      网友评论

          本文标题:Vue 双向绑定

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