• element-ui的el-table和el-form嵌套使用表单校验


    表格中嵌套使用表单验证

    表格是el-table自动获取的后台数据,每行都有el-input的验证,这样一个rules的规则就不能匹配到每一行,所以要是用动态的prop和rules规则

    需求如下,要对告警阈值进行验证

    废话不多说,上代码

    <el-form :model="paramsForm"
                                     ref="rForm"
                                     :rules="paramsForm.paramsRules">
                                <el-table
                                    :data="paramsForm.params"
                                    style=" 100%">
                                    <el-table-column
                                        label="检测类型"
                                        align="center"
                                        width="160">
                                        <template slot-scope="scope">
                                            <span>{{ scope.row.kpiName }}</span>
                                        </template>
                                    </el-table-column>
                                    <el-table-column
                                        label="检测开关"
                                        align="center">
                                        <template slot-scope="scope">
                                            <el-switch
                                                v-model="scope.row.kpiStatus"
                                                :disabled="isDisabled"
                                                active-text="关闭"
                                                inactive-text="开启">
                                            </el-switch>
                                        </template>
                                    </el-table-column>
                                    <el-table-column
                                        label="报警阈值"
                                        align="center">
                                        <template slot-scope="scope">
                                                <el-row>
                                                    <el-col :span="10" style="height:23px;">
                                                        <el-form-item
                                                            v-if="scope.row.kpiType === 'range'"
                                                            :prop="'params.' + scope.$index + '.min'"
                                                            :rules="paramsForm.paramsRules.min">
                                                            <el-input v-model.number="scope.row.min" size="small" :disabled="isDisabled"></el-input>
                                                        </el-form-item>
                                                    </el-col>
                                                    <el-col :span="1">-</el-col>
                                                    <el-col :span="10">
                                                        <el-form-item
                                                            v-if="scope.row.kpiType === 'range'"
                                                            :prop="'params.' + scope.$index + '.max'"
                                                            :rules="paramsForm.paramsRules.max">
                                                            <el-input v-model.number="scope.row.max" size="small" :disabled="isDisabled"></el-input>
                                                        </el-form-item>
                                                    </el-col>
                                                </el-row>
                                        </template>
                                    </el-table-column>
                                </el-table>
                            </el-form>
    

    关键一

    此处 data中定义的变量,params:表格数据,后台查询获得;paramsRules:校验规则

    关键二

    此处 :model、:rules不啰嗦解释

    关键三

    此处 :prop="'params.' + scope.$index + '.min'"和:rules="paramsForm.paramsRules.min"即动态对应上每行数据的校验规则,其他不解释

    如此而已,遇事不要慌,欢迎留言交流

  • 相关阅读:
    区分浏览器的刷新与关闭(网上查到,记录一下)
    echarts中设置markPoint
    Vue自定义指令,ref ,sync,slot
    手动封装on,emit,off
    数组的一些操作
    ES6-字符串扩展-padStart(),padEnd()
    MongoDB 数据库
    新地方
    使用echarts踩过的一些坑
    IE无法访问vue项目
  • 原文地址:https://www.cnblogs.com/midnight-visitor/p/12409805.html
Copyright © 2020-2023  润新知