关于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 相关文章推荐
用js实现下载远程文件并保存在本地的脚本
May 06 Javascript
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
Jan 08 Javascript
jquery动态添加删除(tr/td)
Feb 09 Javascript
全面解析bootstrap格子布局
May 22 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
Jun 18 Javascript
微信小程序 向左滑动删除功能的实现
Mar 10 Javascript
JavaScript闭包_动力节点Java学院整理
Jun 27 Javascript
jquery实现企业定位式导航效果
Jan 01 jQuery
javascript中的隐式调用
Feb 10 Javascript
React props和state属性的具体使用方法
Apr 12 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
May 05 Javascript
layer.js之回调销毁对话框的例子
Sep 11 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
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
劣质的PHP代码简化
2010/02/08 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
php支付宝APP支付功能
2020/07/29 PHP
PHP实现简易计算器功能
2020/08/28 PHP
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
JavaScript的parseInt 取整使用
2011/05/09 Javascript
js随机颜色代码的多种实现方式
2013/04/23 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
2013/10/17 Javascript
Javascript中this关键字的一些小知识
2015/03/15 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
2016/06/13 Javascript
详解vue.js组件化开发实践
2016/12/14 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
2017/04/25 jQuery
angular中ui calendar的一些使用心得(推荐)
2017/11/03 Javascript
开发用到的js封装方法(20种)
2018/10/12 Javascript
vue双向绑定及观察者模式详解
2019/03/19 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
浅析python3中的os.path.dirname(__file__)的使用
2018/08/30 Python
python进行文件对比的方法
2018/12/24 Python
基于Python的图像数据增强Data Augmentation解析
2019/08/13 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
python右对齐的实例方法
2020/07/05 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
pycharm + django跨域无提示的解决方法
2020/12/06 Python
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2015/09/07 面试题
2014年机关植树节活动方案
2014/02/27 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
导游词之晋城蟒河
2019/12/12 职场文书
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL
Java中的继承、多态以及封装
2022/04/11 Java/Android