结合表单验证谈el-form中model、prop、rules属性

news2025/2/25 13:18:02

目录

  • 前言
  • model
  • prop
  • rules
  • 验证
  • 总结

前言

最近写vue项目需要用element ui中的表单组件显示一些信息呈现在页面上,但在使用提供的一些属性时有些困惑——这三者之间有什么关系,必须要同时存在吗?于是在这里做一些记录。

model

model
官方说是表单中的数据对象,于是有

<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="用户名" prop="name">
            <el-input v-model="form.name"></el-input>
</el-form-item>
</el-form>

其中form数据已存于date

   form: {
        name: '',//这里是空的但截图有值 因为该项目需要拿取后端传来的用户信息 但不影响阅读
      },

prop

prop是form-item里的属性:
官方解释prop

rules

rules官方定义这个应该最好理解 就是传入对表单内容的约束条件
比如date下面的rules里就有对name的约束

rules: {
        name: [
          { required: true, message: '请输入用户名', trigger: 'blur' },
          { min: 3, max: 16, message: '长度在 3 到 16 个字符', trigger: 'blur' }
        ],
        }

配置完后的效果图:(上面代码只针对name项,也就是用户名,这里只针对name项讨论。截图含有写的其他项,但不影响阅读)
效果图
当触发约束条件时也奏效:
效果图

验证

把model去掉后:
去掉model
页面的数据都能渲染,就是验证失了控,不管你做什么仿佛它都看不见值,显示的是没有任何输入信息才会触发的红字。看来model的作用是为rules校验传递一个能提供被检测内容的源数据。
去掉prop
把prop去掉后直接失去验证效果
去掉prop
prop与model不同名和rules匹配

上面el-form-item里的prop改成了na,下面date里的rules相应改成na:效果和第一种情况一样。
prop与model不同名和rules匹配

总结

验证表单的过程可以拆解为取值和验证两个过程。
取值是通过model获取源数据、借助prop进而获取被检测的信息。因此没有model自然没了内容,但是验证的过程是存在的,只是一直拿的空值去验证,所以一直都是“请输入用户名”的红字出现。没了prop也是影响到了这一过程。
验证是通过prop与rule的内容进行比对,但prop仅仅是找到rule的相关“条例”,与条例比较的始终还是model借助prop获取的信息。因此没了prop同样影响这一过程——又没源数据又没供你依照的规则,自然就毫无验证功能可言。 而当prop和form表单中的key值不一样但又能和rules匹配时(上图第三种情况),第一条取值的现走不通,第二条验证的线能走通,还是出现了第一种情况的后果。

精简一点就是,model和rules就像一个对象,prop就是两者的属性值,通过prop取值取“条例”进行验证。
然后看到这位博主的理解:

所以我们大致了解的el-form 中 model的作用:目前看来主要是为了配合表单验证。里面的逻辑大概是,在el-form-item上写一个prop,这个prop左手对应着数据源(即用model.prop找到对应的数据源),右手对应着验证规则(即用rules.prop找到对应的规则),然后才能快乐的验证。

也是很形象哒!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/408242.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

flex布局中使用flex-wrap实现换行

最近做个项目,其中有个样式是换行布局,作为样式渣渣的我一开始不会,只能查资料,然后摆平了它.今天得空了,简要记录一下,方便后面小伙伴布局使用. 参考资料 flex-wrap 开始样式 <div class"planWrap"><div class"content planItem">1</div…

vue 父传子 子传父实现方式

父传子&#xff1a; 主要步骤&#xff1a; 首先在子组件props中创建一个属性&#xff0c;用以接收父组件传过来的值&#xff1b;然后父组件中引用子组件&#xff0c;并在子组件标签中添加子组件props中创建的属性&#xff1b;最后把需要传给子组件的值赋给该属性。 理解&#…

Vue父子组件生命周期执行顺序

要想弄懂Vue父子组件的生命周期执行顺序&#xff0c;首先要知道vue页面的生命周期钩子函数的执行顺序&#xff0c;这也是在面试中老生常谈的问题&#xff0c;同时相信大家在工作的时候也能经常碰到父子组件加载上的问题&#xff0c;所以&#xff0c;不管是面试还是工作&#xf…

前端常见的时间转换方法合集+动态时钟效果实现

1.将时间戳转换为YYYY-MM-DD HH:mm:ss格式-老方法 通过对应的年月日时分秒依次进行拼接&#xff0c;另外还需要对小于10的值进行处理&#xff0c;在前面添加字符串‘0’&#xff0c;转换为常见的两位数时间格式 function transformTime(timestamp new Date()) { if (time…

Vue实现生成二维码

目 录 ①首先创建一个vue项目 ②引入qrcodejs2 ③封装组件 1. 创建Vue文件 2. 定义template模板 3. 引入QRCode包 4. 进行封装 5. less控制样式 ④启动项目 1. 在终端输入启动项目命令 2. 在浏览器中输入访问地址 3. 访问生成的二维码 4. 扫码进行解析 与后端用J…

CSS实现文字描边效果

一、介绍 最近在一个项目的宣传页中&#xff0c;设计师使用了文字描边效果&#xff0c;之前我确实没有实现过文字的描边效果&#xff0c;然后我在查阅资料后&#xff0c;知道了实现方法。文字描边分为两种&#xff1a;内外双描边和单外描边&#xff0c;也就是指在给文字加上描…

ElementPlus DateTimePicker日期时间选择器限制可选时间范围(精确时分秒)

项目场景 ElementPlus DateTimePicker日期时间选择器 当我们使用日期时间选择器时&#xff0c;可能会有需求只能选择今日之前或者今日之后&#xff0c;又或者一周内&#xff0c;一个月内的时间&#xff0c;而其他的时间应该禁止被用户选择。 解决 直接看文档&#xff1a; …

【element】el-autocomplete的常见用法

前言&#xff1a; 这段时间突然发现很少写博客了&#xff0c;平时都在平衡工作和休息的时间&#xff0c;周末也没动过笔&#xff0c;而且更重要的是我找不到写的内容了&#xff0c;在经历的初始的新知识的学习阶段后&#xff0c;目前的阶段更加转入对于业务的理解&#xff0c;…

vite基本配置教程

&#x1f469; 个人主页&#xff1a;不爱吃糖的程序媛 &#x1f64b;‍♂️ 作者简介&#xff1a;前端领域新星创作者、CSDN内容合伙人&#xff0c;专注于前端各领域技术&#xff0c;成长的路上共同学习共同进步&#xff0c;一起加油呀&#xff01; ✨系列专栏&#xff1a;前端…

C1认证之web基础知识及习题——我的学习笔记

文章目录 目录 文章目录 前言​​​​​​​ Web基础 十四、语义化标签 知识点 习题 十五、表单标签 知识点 习题 十六、转义字符 知识点 习题 十七、Head头 知识点 习题 十八、CSS引入方式 知识点 习题 十九、CSS背景 知识点 习题 二十、CSS文本属性 …

CSS合并单元格四种方式:table/display/flex/grid

目录 方式一&#xff1a;table【最简单写法】 方式二&#xff1a;display: table--不推荐 方式三&#xff1a;display: flex 方式四&#xff1a;display: grid 效果图&#xff1a; 方式一&#xff1a;table【最简单写法】 colspan&#xff1a;规定单元格可横跨的列数。row…

【vue2】近期bug收集与整理02

⭐【前言】 在使用vue2构建页面时候&#xff0c;博主遇到的问题难点以及最终的解决方案。 &#x1f973;博主&#xff1a;初映CY的前说(前端领域) &#x1f918;本文核心&#xff1a;博主遇到的问题与解决思路 目录⭐数据枚举文件的使用⭐elementUI中分页组件使用的注意事项⭐v…

vue解决Not allowed to load local resource

前言 在进行通过本地路径进行加载图片的时候&#xff0c;突然就报了这个问题 Not allowed to load local resource 这个是由于安全性的问题&#xff0c;导致浏览器禁止直接访问本地文件 那么&#xff0c;这边我说一下我具体是怎么解决的吧 问题描述 我的项目是用的vue的vant…

webpack -v报错:Cannot find module ‘webpack-cli/package.json‘

-D安装了webpack和webpack-cli&#xff0c;-g安装了webpack和webpack-cli&#xff0c;但是webpack -v的时候仍然提示需要安装webpack-cli&#xff0c;并且安装之后会报错&#xff1a; 看提示应该是webpack-cli/package.json的位置获取不到正确的&#xff0c;但是并不知道为什么…

【附源码】解决pdf.js跨域并从url动态加载pdf文档

0. Abstract 当我们想用PDF.js从URL加载文档时&#xff0c;将会因遇到跨域问题而中断&#xff0c;且是因为会触发了PDF.js和浏览器的双重CORS block&#xff0c;这篇文章将会介绍&#xff1a;①如何禁用pdf.js的跨域&#xff1f;②如何绕过浏览器的CORS加载URL文件&#xff1f…

axios请求中以params或body形式传递参数的区别

一、前言&#xff1a; 前端发送请求最常⽤的是get请求还有post请求&#xff0c;get请求只能传query参数&#xff0c;query参数都是拼在请求地址上的&#xff0c;post可以传body和query两种形&#xff1b;我在开发的时候通常使用的是Axios第三方库进行网络请求&#xff0c;所以这…

教你如何用CSS修改图片颜色

看到题目是不是吓了一跳&#xff1f;css竟然还有这个操作&#xff1f;还真是第一次听说~ 原理嘛&#xff0c;其实很简单的&#xff0c;用到的就是 CSS3 滤镜filter中的drop-shadow&#xff0c;该滤镜可以给图片非透明区域添加投影。你可以理解为下图 它实现的效果看上去就像使原…

npm install常见报错及问题

目录一、ERESOLVE unable to resolve dependency tree1.可能性一&#xff1a;镜像源无法访问2.可能性二&#xff1a;npm版本过低或者过高3.可能性三&#xff1a;node和npm版本不匹配二、Error: EACCES: permission denied, mkdir /usr/local/lib/node_modules/yarn三、Error: C…

【2022-05-31】JS逆向之易企秀

提示&#xff1a;文章仅供参考&#xff0c;禁止用于非法途径 文章目录前言一、页面分析二、参数u获取三、总结前言 我滴个姥姥&#xff0c;好像是好久没跟了呀&#xff0c;主要是实在不知道写啥了 今天这个表单是最近碰到&#xff0c;就拿出来分享下吧 一、页面分析 表单可以…

解决:code ERESOLVE:ERESOLVE could not resolve 的报错问题

1、报错分析&#xff1a; 其一、报错的代码及信息为&#xff1a; A、报错的代码&#xff1a; ERESOLVE could not resolve B、报错的信息展示为&#xff1a; 其二、报错的问题分析&#xff1a; A、找到报错的代码为&#xff1a; npm i sass-loader7.3.1 B、为什么会报错…