关于element的表单组件整理笔记


Posted in Javascript onFebruary 05, 2021

element表单及代码的展示

详细可以看element表单官方网址

结构、功能分析

通过介绍以及源码可以发现,表单是具有收集、校验、提交数据三个功能的。

他的基本结构如下:

<el-form :model="ruleForm" :rules="rules" ref="ruleForm">
 <el-form-item label="账号" prop="name">
 <el-input v-model="ruleForm.name"></el-input>
 </el-form-item>
</el-form>

通用组件的特点就是:高内聚、低耦合,根据这个特点,我们所要写的组件就应该是一个模块负责一个功能(功能单一、提高复用性),同时减少他们之间交互带来的不良影响。

分析上面源码的基本结构:

form:model:rules 分别是用于接受数据模型校验规则、使用ref属性进行了注册,方便后续操作DOM

item: 通过prop得到当前数据的值

input: 双向绑定管理数据

那么就可以得知他们分别负责的功能是收集、校验、提交数据

那么下面就用我们最常见的登录注册功能来从小往大开始写一遍代码

input组件实现

首先明确目标:input组件只需要实现双向绑定,起到管理数据的功能即可

双向绑定的实现需要用到v-model,在以往学习过程中,v-model语法糖其实是可以拆分成v-bing:valuev-on:input两个,在绑定数据的时候同时监听事件。

下面粘贴一些代码截图,方便下面记录:

父组件:

关于element的表单组件整理笔记

子组件:

关于element的表单组件整理笔记

首先明确Input需要实现的功能:通过双向绑定维护数据

那么只需要搞懂双向绑定的值与监听的事件分别是什么就行。

为了方便管理数据,input子组件里绑定的值应该是父组件传进来的值

值得注意的是:在子组件的input事件里,一般是一个单向数据流,那么当数据发生变化的时候,只需要派生一个事件给父组件,再通过监听父组件传进来的值,从而实现改变数据,实现一个父传子、子传父的单向循环

item组件的实现

父组件:

关于element的表单组件整理笔记

子组件:

关于element的表单组件整理笔记

item子组件需要完成的功能为:校验

我们先写一个模板,校验功能等到后面再完善

form组件的实现

父组件:

关于element的表单组件整理笔记

子组件:

关于element的表单组件整理笔记

form实现的功能:接收数据和校验规则

所以需要声明这两个属性方便接收

关于element的表单组件整理笔记

基本的框架都完成了,下面就是核心问题

核心问题

 ①在form里接受的数据和规则,但是需要用的地方却是在item里,那么我们怎么把值传下去呢 => provide和inject

虽然目前我们要用到的值只有imformation和rules,但是为了方便,我们传的值是this,这样以后就可以通过this,在子代拿到父代以及更高级的实例.

在form组件里加入provide

关于element的表单组件整理笔记

其他需要用的数据的组件里加入inject

关于element的表单组件整理笔记

使用例子:

关于element的表单组件整理笔记

②通知校验、进行校验

在input组件里派发一个事件给自己的父级item,通知它校验

关于element的表单组件整理笔记

在item里接收这个事件并实现

关于element的表单组件整理笔记

关于element的表单组件整理笔记

关于element的表单组件整理笔记

在validate方法里,首先我们要获取到校验的规则和需要被校验的值,那么我们之前通过provide和inject已经把值传下来了,现在通过在item里加一个prop,这样就可以通过prop定位拿到我们想要的值

接下来我们安装一个第三方库 npm i async-validator -S(可以执行很多异步的校验规则)

async-validator使用

然后在item里引入使用

关于element的表单组件整理笔记
关于element的表单组件整理笔记

到这里其实基本就算完成了,为了更好的使用,一般是有一个提交按钮,点击后再进行全局校验的

提交功能

父组件:

关于element的表单组件整理笔记

关于element的表单组件整理笔记

form子组件:

关于element的表单组件整理笔记

到这里就算是完成了,感谢大家的观看,本人只是个小菜鸡,如果大家发现有什么地方不对的,请立马提出你宝贵的意见纠正我,谢谢

总结

到此这篇关于关于element表单组件的文章就介绍到这了,更多相关element表单组件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
动态加载图片路径 保持JavaScript控件的相对独立性
Sep 06 Javascript
JavaScript异步编程:异步数据收集的具体方法
Aug 19 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
Nov 07 Javascript
javascript判断office版本示例
Apr 11 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
Sep 09 Javascript
javascript DIV实现跟随鼠标移动
Mar 19 Javascript
jQuery获取与设置iframe高度的方法
Aug 01 Javascript
Javascript单例模式的介绍和实例
Oct 08 Javascript
vue中路由验证和相应拦截的使用详解
Dec 13 Javascript
javascript移动端 电子书 翻页效果实现代码
Sep 07 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
Feb 11 Javascript
javascript局部自定义鼠标右键菜单
Dec 08 Javascript
详解JavaScript中的this指向问题
Feb 05 #Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
Feb 05 #Javascript
详解javascript脚本何时会被执行
Feb 05 #Javascript
前端如何实现动画过渡效果
Feb 05 #Javascript
原生js拖拽功能制作滑动条实例代码
Feb 05 #Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
Feb 04 #jQuery
如何在JavaScript中使用localStorage详情
Feb 04 #Javascript
You might like
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
2011/07/03 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
jquery的ajax请求全面了解
2013/03/20 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
2013/09/27 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
2014/06/10 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2015/12/28 Javascript
JS 组件系列之BootstrapTable的treegrid功能
2017/06/16 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
2018/09/27 Javascript
vue学习之Vue-Router用法实例分析
2020/01/06 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
Python循环中else,break和continue的用法实例详解
2019/07/11 Python
Python连接mysql数据库及简单增删改查操作示例代码
2020/08/03 Python
Python3中FuzzyWuzzy库实例用法
2020/11/18 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021/01/07 Python
DC Shoes荷兰官方网站:美国极限运动品牌
2019/10/22 全球购物
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
大学生职业生涯规划书范文
2014/01/14 职场文书
运动会加油口号
2014/06/07 职场文书
霸气队列口号
2014/06/18 职场文书
落实八项规定专题民主生活会对照检查材料
2014/09/15 职场文书
乡镇民主生活会发言材料
2014/10/20 职场文书
物业客服专员岗位职责
2015/04/07 职场文书
施工安全协议书
2016/03/22 职场文书
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
2021/04/04 Servers
详解Laravel框架的依赖注入功能
2021/05/27 PHP
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
2022/01/18 HTML / CSS
如何使用SQL Server语句创建表
2022/04/12 SQL Server