form表单内层嵌套再嵌套的prop写法

好几次就是碰到这个写法记录下,嵌套双层~

功能如下,点击上面的新增1,每次增加一个大的项,点击删除1删除一整个,点击增加2增加子栏目一项,点击删除2删除一项~

数据结构:

formData:{

      colomun:[

                   {

                      options:[ { }]

                    }

                         ]

                     } 

内层嵌套检验规则的prop如果写错会存在相应的报错 或者不校验的情况

1.

2.不校验的话基本上就是写成了和v-model一样,至于为啥不生效校验不太懂

只能写成  :prop="`columnList.${index}.options.${k}.name`"

功能示意图:

代码完整的,增加删除函数省略~~~


      <el-form
        :model="formData"
        ref="formData"
        label-width="150px"
        class="demo-dynamic"
        label-position="top"
      >
        <div
          class="mini-cont bg-purple-light"
          v-for="(item, index) in formData.columnList"
          :key="index"
        >
          <div class="grid-content1">体验项目{{ index + 1 }}</div>
          <div class="" style="width: 100%">
            <el-form-item
              :prop="`columnList.${index}.name`"
              label="体验项目"
              :rules="{
                required: true,
                message: '体验项目不能为空',
                trigger: 'blur',
              }"
            >
              <div class="flexItem">
                <el-input v-model="item.name" maxlength="20"></el-input>
                <el-button
                  type="danger"
                  style="margin: 0 28px"
                  @click="handleMeetRemove(index)"
                  >删除</el-button
                >
                <el-button type="primary" @click="handleItem(index)"
                  >增加</el-button
                >
              </div>
            </el-form-item>

            <div
              class="flexItem"
              v-for="(meetItem, k) in item.options"
              :key="k"
            >
              <el-form-item
                :label="`体验项目子栏目${k + 1}`"
                style="width: 30%"
                :prop="`columnList.${index}.options.${k}.name`"
                :rules="{
                  required: true,
                  message: '体验项目子栏目不能为空',
                  trigger: 'blur',
                }"
              >
                <el-input v-model="item.options[k].name"></el-input>
              </el-form-item>

              <el-form-item
                :label="`体验项目子栏目价格${k + 1}`"
                style="width: 28%"
                :prop="`columnList.${index}.options.${k}.price`"
                :rules="{
                  required: true,
                  message: '体验项目子栏目价格不能为空',
                  trigger: 'blur',
                }"
              >
                <el-input
                  v-model="item.options[k].price"
                  @blur="testPrice(item.options[k].price, index, k)"
                ></el-input>
              </el-form-item>

              <el-form-item>
                <el-button type="danger" @click="handleItemRemove(index, k)"
                  >删除</el-button
                >
              </el-form-item>
            </div>
          </div>
        </div>
      </el-form>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值