组件动态添加数据item 必填规则验证

动态添加通过数据驱动就可以,难点在于动态绑定后的验证规则。不要在rules数组里添加动态生成 太麻烦且容易出问题,直接在单项item里定义规则 ♥️ 重要的是props动态生成 programPictureSceneryList.${index}.picName
一般人不会想到这么写,基本会歪到programPictureSceneryList[index].picName oh shift 真坑
且注意 programPictureSceneryList.${index}.picName 在动态生成rules组里也没出发验证规则,踩坑属于。

  <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item
          label="名称"
          :rules="[{ required: true, message: '请输入名称', trigger: 'blur' }]"
          prop="name"
        >
          <el-input v-model="form.name" placeholder="请输入名称" />
        </el-form-item>
        <el-form-item
          :rules="[{ required: true, message: '请输入名称', trigger: 'blur' }]"
          label="介绍"
          prop="introduce"
        >
          <el-input
            v-model="form.introduce"
            type="textarea"
            placeholder="请输入介绍"
          />
        </el-form-item>
        <el-upload
          ref="uploadRef"
          style="display: flex; justify-content: center"
          class="upload-demo"
          name="file"
          action="http://manage.sdlb.cc/ruoyi/common/uploadOneFileToQiniu"
          :on-success="handleSuccess1"
          :show-file-list="false"
          :limit="1"
        >
          <template #trigger>
            <el-button type="primary">上传图片</el-button>
          </template>
        </el-upload>
        <!-- 新增模板 -->
        <div
          class="temp"
          v-for="(item, index) in form.programPictureSceneryList"
          :key="index"
        >
          <img
            class="shut"
            src="http://img.sdlb.cc/web/%E5%88%A0%E9%99%A4.png"
            alt=""
            @click="delImg(item)"
          />

          <el-form-item
            :label="'标题 ' + (index + 1)"
            style="margin-top: 24px"
            :prop="`programPictureSceneryList.${index}.picName`"
            :rules="[
              { required: true, message: '请输入标题', trigger: 'blur' },
            ]"
          >
            <el-input v-model="item.picName" placeholder="请输入标题" />
          </el-form-item>
          <el-form-item
            :label="'星级 ' + (index + 1)"
            :prop="`programPictureSceneryList.${index}.starRating`"
            :rules="[
              { required: true, message: '请输入标题', trigger: 'blur' },
            ]"
          >
            <el-input
              v-model.number="item.starRating"
              placeholder="请输入星级"
            />
          </el-form-item>
          <el-form-item :label="'图片地址 ' + (index + 1)">
            <el-input disabled v-model.number="item.picUrl" />
          </el-form-item>
        </div>
      </el-form>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值