关于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 相关文章推荐
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
May 06 Javascript
五段实用的js高级技巧
Dec 20 Javascript
原生Ajax 和jQuery Ajax的区别示例分析
Dec 17 Javascript
javascript基本包装类型介绍
Apr 10 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
Dec 01 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
May 12 Javascript
使用travis-ci如何持续部署node.js应用详解
Jul 30 Javascript
javaScript日期工具类DateUtils详解
Dec 08 Javascript
详解webpack打包第三方类库的正确姿势
Oct 20 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
Aug 08 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
Sep 07 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
Aug 04 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时间戳使用实例代码
2008/06/07 PHP
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
深入php define()函数以及defined()函数的用法详解
2013/06/05 PHP
调整PHP的性能
2013/10/30 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
PHP获取当前时间不准确问题解决方案
2020/08/14 PHP
javascript 时间比较实现代码
2009/10/28 Javascript
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
PHP结合jQuery实现红蓝投票功能特效
2015/07/22 Javascript
smartcrop.js智能图片裁剪库
2015/10/14 Javascript
分享纯手写漂亮的表单验证
2015/11/19 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
vue实现底部菜单功能
2018/07/24 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
Python协程的用法和例子详解
2017/09/09 Python
Python管理Windows服务小脚本
2018/03/12 Python
tensorflow实现简单的卷积网络
2018/05/24 Python
pyqt5的QComboBox 使用模板的具体方法
2018/09/06 Python
Python3最长回文子串算法示例
2019/03/04 Python
python pytest进阶之fixture详解
2019/06/27 Python
使用Pycharm分段执行代码
2020/04/15 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
美国标志性加大尺码时装品牌:Ashley Stewart
2016/12/15 全球购物
美国在线印刷公司:PsPrint
2017/10/12 全球购物
英国时尚运动品牌的合集:The Sports Edit
2017/12/20 全球购物
优秀高中生事迹材料
2014/02/11 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
五好家庭申报材料
2014/12/20 职场文书
跑吧孩子观后感
2015/06/10 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python
Python 文本滚动播放器的实现代码
2021/04/25 Python
在redisCluster中模糊获取key方式
2021/07/09 Redis
Python 键盘事件详解
2021/11/11 Python