首页 > 其他分享 >Vue学习笔记之Element-UI表单校验中的多层嵌套处理

Vue学习笔记之Element-UI表单校验中的多层嵌套处理

时间:2022-10-30 11:38:39浏览次数:67  
标签:Vue required Element trigger UI 为空 message true change

VUE rules 多层嵌套

0x00 概述

本文主要记录VUE页面Element-UI表单校验中的多层嵌套处理。

 

0x01 Element-UI表单校验中多层嵌套

<el-row :gutter=20 class="with-bg" v-for="(product, idx) in productList" :key="product.id">
<el-col :span="10">
<el-form-item label="产品分类1" :prop="'productList.'+idx+'.productType'" :rules="[{required:true, message: '分类1不能为空', trigger: 'change' }]">
<el-select clearable v-model="product.productType" placeholder="请选择产品分类1">
<el-option v-for="param in getContent('PRODUCT_TYPE')"
:key="param.id"
:label="param.name"
:value="param.code"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品分类2" :prop="'productList.'+idx+'.subproductType'" :rules="[{required:true, message: '分类2不能为空', trigger: 'change' }]">
<el-select clearable v-model="product.subproductType" placeholder="请先选产品分类2"
@change="value => effectMonthsHandler(value, idx)"
>
<el-option
v-for="(item, index) in getContent('PRODUCT_SUB_TYPE').filter(r => r.parentParamId === (getContent('PRODUCT_TYPE').find(p => p.code === product.productType)||{}).id)"
:key="index"
:label="item.name"
:value="item.code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="2">
<a v-if="editable && productList.length > 1" class="delete-item" @click="deleteproductItem(idx)"><i class="el-icon-delete"></i></a>
</el-col>
</el-row>

以上productList列表内的每个product对象有两个属性,分别为productType和subproductType;

在form-item内绑定prop,按照​​:prop="'productList.'+index+'.product'"方法,代码冗余切没法绑定productType和subProductType的关系​

data () {
return {
...省略...
punishList: [],
...省略...
rules: {
"productList.0.productType'": [{ required: true, message: '产品分类1不能为空', trigger: 'change' }],
"productList.1.productType'": [{ required: true, message: '产品分类1不能为空', trigger: 'change' }],
"productList.2.productType'": [{ required: true, message: '产品分类1不能为空', trigger: 'change' }],
"productList.3.productType'": [{ required: true, message: '产品分类1不能为空', trigger: 'change' }],
"productList.4.productType'": [{ required: true, message: '产品分类1不能为空', trigger: 'change' }],
...省略...
"productList.0.subProductType'": [{ required: true, message: '产品分类2不能为空', trigger: 'change' }],
"productList.1.subProductType'": [{ required: true, message: '产品分类2不能为空', trigger: 'change' }],
"productList.2.subProductType'": [{ required: true, message: '产品分类2不能为空', trigger: 'change' }],
"productList.3.subProductType'": [{ required: true, message: '产品分类2不能为空', trigger: 'change' }],
"productList.4.subProductType'": [{ required: true, message: '产品分类2不能为空', trigger: 'change' }],
...省略...
},
}
},

 

0x02 将:rules放到template内,实现动态绑定

将:rules放到template内,rules内不用在写针对productList的验证规则。

<el-form-item label="产品分类1" :prop="'productList.'+idx+'.productType'" :rules="[{required:true, message: '分类1不能为空', trigger: 'change' }]">

 

0x03 参考

​​Vue 篇 解决ELement UI 中表单验证(多层Object嵌套)​​

​​vue elementUI 表单校验(多层嵌套)//终极版​​

​​Vue——rules动态判定require布尔值及1-255正则表达式​​



标签:Vue,required,Element,trigger,UI,为空,message,true,change
From: https://blog.51cto.com/u_13597899/5807465

相关文章

  • Java 使用StringBuilder组装字符串
    下面这个例子来自SpringBoot源码,这里是要打印程序启动的时间这样的字符串,需要拼装的信息有程序名字,启动时长,JVM时长。privateStringBuildergetStartedMessage(StopWatc......
  • 如何从零开发Vue,vue环境安装。
    1.首先去官网下载安装包​​https://nodejs.org/en/​​2.安装下载包。直接下一步下一步就行了。我这里安装在了D盘    D:\ProgramFiles\nodejs这个目录3.进入安......
  • Vue3中 响应式 API ( readonly、shallowReadonly、toRaw、markRaw ) 详解
    ​​传送门:Vue3中响应式API(reactive、ref、toRef、toRefs)详解​​传送门:Vue3中响应式API(shallowReactive、shallowRef、triggerRef、customRef)详解1.readonly......
  • DOM的Document对象创建DOM对象和DOM的Element对象
    DOM的Document对象创建DOM对象2.创建其他DOM对象:createAttribute(name)createComment()crea......
  • 宝塔面板部署vue项目
    一、安装宝塔面板在宝塔面板官网,找到linux安装命令大全 https://www.bt.cn/new/btcode.html ,使用一下命令安装宝塔面板 找到服务器实例为实例建立远程连接,在连接......
  • VueX状态管理
    目录总览:一、VueX概念1.VueX的概念Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可......
  • Vue页面重新加载刷新数据配置
    第一种方式reload一、在根文件app.vue文件中配置//app.vue<template><!--给全局挂载适配元素app--><divid="app"><keep-aliveinclude="DataSet">......
  • DOM概述和DOM的Document对象获取Element方法
    DOM概述W3C DOM 标准被分为3个不同的部分:核心DOM-针对任何结构化文档的标准模型Document:文档对象Element:元素对象Attribute:属性......
  • 【转】VUE 组件之间的数据共享
              [email protected]                   ......
  • Vue router简单配置入门案例
    { 注意驼峰命名法,不然会报错  }   1.在Views文件夹下创建Vue路由文件,例如:<template></template> <script></script> template:表示html结构区域,scri......