赞
踩
如下代码,prop绑定值理想写法应为
list[groupIndex].name
,但在这需要list.[groupIndex].name
才能绑定成功
<el-form ref="form" :model="form"> <el-form-item v-for="(item,groupIndex) in form.list" :key="groupIndex" :label="'组'+(groupIndex+1)+':'" label-width="150px"> <el-row> <el-col :span="9"> <el-form-item :prop="'list.'+groupIndex+'.name'" :rules="[{ validator: checkFood, trigger: 'change' }]"> <el-select v-model="form.list[groupIndex].name" placeholder="请选择食物" clearable> <el-option v-for="(food,foodIndex) in ['番茄炒蛋','青椒炒肉','烧鸭','猪脚']" :key="foodIndex" :label="food" :value="food" /> </el-select> </el-form-item> </el-col> <el-col :span="9" :offset="4"> <el-form-item :prop="'list.'+groupIndex+'.num'" :rules="[{ validator: checkNum, trigger: 'change' }]"> <el-select v-model.number="form.list[groupIndex].num" placeholder="请选择数量" clearable> <el-option v-for="num in [1,2,3,4]" :key="num" :label="num" :value="num" /> </el-select> </el-form-item> </el-col> </el-row> </el-form-item> </el-form>
<script> export default { data() { return { form: { list: [{ 'name': '', 'num': null }, { 'name': '', 'num': null }, { 'name': '', 'num': null }, { 'name': '', 'num': null }] }, checkFood: (rule, value, callback) => { const arr = rule.field.split('.')// field: prop的值,list.0.name if (!value && !this.form.list[arr[1]]['num']) { // 两个值都为空 this.$refs.form.clearValidate(arr[0] + '.' + arr[1] + '.' + 'num') callback() } else if (!value && this.form.list[arr[1]]['num']) { callback(new Error('请选择食物数量')) } else { callback() } }, checkNum: (rule, value, callback) => { const arr = rule.field.split('.') if (!value && !this.form.list[arr[1]]['name']) { this.$refs.form.clearValidate(arr[0] + '.' + arr[1] + '.' + 'name') callback() } else if (!value && this.form.list[arr[1]]['name']) { callback(new Error('请选择食物')) } else if (this.accout > 4) { callback(new Error('数量总和不大于4')) } else { callback() } } } } } </script>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。