循环生成的from表单怎么单独提交?

333 阅读1分钟
  1. 校验规则 举例说明:uniapp的from表单
this.$refs[ref名称].validate()

循环后的表单,要加上索引

this.$refs[ref名称][0].validate()
  1. 绑定的from表单,ref名称.每一项都必须与循环的单项挂钩,也就是item
<uni-forms :ref="item.ref" :modelValue="item" :rules="rulesMeasure" label-position="top"
	label-width="300rpx">
	<uni-forms-item required label="确认人" name="nameid">
		<view class="input" @click="handleOpenPeoNew(item.id)">
			{{item.name}}
		</view>
	</uni-forms-item>
	<uni-forms-item required label="是否涉及" name="isInvolve">
		<uni-data-checkbox v-model="item.isInvolve" @change="handleChange(item.id,$event)"
			:localdata="level">
		</uni-data-checkbox>
	</uni-forms-item>
	<view v-if="item.isshow === 1" class="addition">
		<view class="addition_item" v-for="(i,c) in item.stdsmr5" :key="c">
			<view>补充点{{i.no}}</view>
			<uni-easyinput v-model="i.v" />
		</view>
	</view>
</uni-forms>
  1. 提交的数据,数据的话也需要和item挂钩,以id区分,不然多条数据就绑定一个值上面了.这里我选择了使用this.$set来向item添加响应式的数据,查询出来的数据只用来做渲染,为了与原数据区分开,所以对于用来提交表单的数据全部用this.$set来向数据添加响应式数据,如果直接使用item.xxx = xxx数据不是响应式,即时修改了也无法渲染到页面上
this.$set(item, 'ref', `form${index}`)
this.$set(item, 'nameid', '')
this.$set(item, 'name', '')
this.$set(item, 'isInvolve', '')
this.$set(item, 'isshow', '')
this.$set(item, 'src', '')
this.$set(item, 'e50id', '')

tips:1.每一次修改或者获取想要的数据必须与数据里的唯一标识挂钩:比如id

this.MeasureList.forEach(item => {
    if (item.id === val.id) {
	item.nameid = val.nameid
	item.name = val.name
    }
})

2.针对于校验规则,由于数据是循环生成的所有提交的请求参数大概率是一样的,所以校验规则就不需要改了,根据id对相应的数据进行校验即可

如果有更好的办法可以告诉我,谢谢