vue渲染多个表单

html: 

 <div v-for="(item, index) in userDefinedFormList" :key="index">
    <el-form
      :model="item"
      ref="userDefinedForm"
      :rules="userDefinedFormRules"
      label-width="100"
      class="userDefined-form"
    >
      <div class="userDefined-item-box">
        <el-form-item :label="'名称:'" :prop="'name'">
          <el-input
            v-model="item.name"
            placeholder="请输入名称"
            class="userDefined-item"
          />
        </el-form-item>
      </div>
      <div class="userDefined-btn-box">
        <el-button
          icon="el-icon-check"
          type="primary"
          size="medium"
          circle
          title="确认修改"
          @click="saveOneParams(index, item, 'userDefinedForm')"
        ></el-button>
      </div>
    </el-form>
  </div>

需要注意的是,添加校验的prop是要加单引号的,否则提示item没有'name'这个项,使用 prop="item.name"? 那肯定不行滴,会出现填写的name值为空的情况

定义:

 userDefinedForm主要用来做初始化:this.userDefinedFormList.push(this.userDefinedForm)
 注意:push()是es6中数组的方法,设置this.userDefinedFormList = null 时是不能用push()的 

userDefinedFormList: [],
      userDefinedForm: {
        name: '',
        type: '',
        maxLength: ''
      },
      // 自定义表单规则校验
      userDefinedFormRules: {
        name: {
          required: true,
          message: '字段名不能为空',
          trigger: 'blur'
        }
      }

js:

// index:表单元素下标,item:数组当前元素,即表单数据
saveOneParams (index, item, formName) { 
// 此时form表单是数组,需要添加下标获取当前表单元素
      this.$refs[formName][index].validate((valid) => {
        if (valid) {
            // http请求
        }
      })
    },

记得初始化要更新数组值,设置为null或者 [ ] 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值