上周换到新项目组,依然是vue,不过是搭配element-ui。

这两天开始用el-form,发现了个问题。

就是我的表单确定提交之后,需要重置表单,一开始我没看熟API,直接将form对象手动赋成初始值,但是这样的问题是再打开每个el-form-item还是校验成功,

这时我发现了resetFields方法(对整个表单进行重置,将所有字段值重置为初始值并移除校验结果),于是改用这个方法。

改了之后出现了另一个问题,其他字段都重置了,但是有一个form-item里面放的是checkbox,我给的初始值是false,但是重置后变成了true。我以为我给的值类型不对,后来发现怎么也不行。

去看了下elementui form/form-item的源码,发现,必须在每个form-item里加上prop属性,并且与-model的值相同才可以。

因为我的checkbox不是必选的,也没什么其他验证,所以一开始没有给prop属性:

<el-form-item label="领取限制" prop="limitType">
<el-checkbox v-model="form.limitType">关注公众号才能领取</el-checkbox>
</el-form-item>

后来改成了:

<el-form-item label="领取限制" prop="limitType">
<el-checkbox v-model="form.limitType">关注公众号才能领取
</el-checkbox>
</el-form-item> rules: {
  limitTYpe: []
}

这样才重置成功~

来看一下form-item中关于resetField的代码:

    // 重置字段为初始值
resetField() {
this.validateState = '';
this.validateMessage = ''; // 获取model数据模型中所对应的值
let model = this.form.model; // 所有表单数据
let value = this.fieldValue; // 该项表单数据
let path = this.prop;
if (path.indexOf(':') !== -1) {
path = path.replace(/:/, '.');
} let prop = getPropByPath(model, path, true); this.validateDisabled = true;
// 重置为一开始获取的初始值
if (Array.isArray(value)) {
prop.o[prop.k] = [].concat(this.initialValue);
} else {
prop.o[prop.k] = this.initialValue;
} // 向下寻找select组件,发布fieldReset事件暴露初始表单数据
this.broadcast('ElTimeSelect', 'fieldReset', this.initialValue);
},

可以看到初始值是通过prop计算得到当前path,由path得到getPropByPath的返回值prop,并将prop.o[prop.k]设置为初始值,完成重置。

关于element-ui resetFields的更多相关文章

  1. element ui 中的 resetFields() 报错'resetFields' of undefined

    每次做各种form表单时,首先要注意的是初始化,但是刚开始若没有仔细看文档,则会自己写个方法将数据设置为空,但是这样就会出现一个问题,表单内存在各种验证,假如是一个弹框内有form表单,弹框出现就执行 ...

  2. element ui form表单清空规则

    公司项目重构,经过商定使用element ui.在重构项目的时候发现一下element ui上很蛋疼的东西. 例如,这个form表单就是一个.趁着在高铁上没事,把想写的东西写一下. 先说一下eleme ...

  3. 【Element UI】使用问题记录

    [Element UI]使用问题记录 转载:https://www.cnblogs.com/yangchongxing/p/10750994.html 下载地址: https://unpkg.com/ ...

  4. 关于vue.js element ui 表单验证 this.$refs[formName].validate()的问题

        方法使用前需了解: 来自”和“小编的小提示: 首先打印一下this.$refs[formName],检查是否拿到了正确的需要验证的form. 其次在拿到了正确的form后,检查该form上添加 ...

  5. 使用element ui 日期选择器获取值后的格式问题

    一般情况下,我们需要给后台的时间格式是: "yyyy-MM-dd" 但是使用Element ui日期选择器获取的值是这样的: Fri Sep :: GMT+ (中国标准时间) 在官 ...

  6. element ui 1.4 升级到 2.0.11

    公司的框架 选取的是 花裤衩大神开源的 基于 element ui + Vue 的后台管理项目, 项目源码就不公开了,记录 分享下 步骤 1. 卸载 element ui 1.4的依赖包 2. 卸载完 ...

  7. [坑况]饿了么你是这样的前端——vue+element ui 【this dependency was not found:'element-ui/lib/theme-chalk/index.css'】

    element ui 坑况:今日pull代码,潇洒npm run dev ,被告知:this dependency was not found:'element-ui/lib/theme-chalk/ ...

  8. Vue + Element UI项目初始化

    1.安装相关组件 1.1安装Node 检查本地是否安装node node -v 如果没有安装,从Node官网下载 1.2安装npm npm -v 如果没有安装:使用该指令安装: npm install ...

  9. Element UI——本地引入iconfont不显示

    前言 前面因为本地引入Element UI导致了iconfont不显示,所以只好再去Element UI官网去扒下iconfot 步骤 进入官网 组件 | Element UI F12进入控制台,找到 ...

  10. Html | Vue | Element UI——引入使用

    前言 做个项目,需要一个效果刚好Element UI有,就想配合Vue和Element UI,放在tp5.1下使用,但是引入在线的地址各种报错,本地引入就完美的解决了问题! 代码 __STATIC_J ...

随机推荐

  1. Tesseract训练

    最近在用Tesseract做一个图片识别的小应用,目标图像只有数字和英文字母,在实际使用过程中发现个别数识别错误,因此不得不研究学习Tesseract的训练. http://www.cnblogs.c ...

  2. (转)SQLServer_十步优化SQL Server中的数据访问一

    原文地址:http://tech.it168.com/a2009/1125/814/000000814758_all.shtml 第一步:应用正确的索引 我之所以先从索引谈起是因为采用正确的索引会使生 ...

  3. leetcode《按递增顺序显示卡牌》

    题目描述: 牌组中的每张卡牌都对应有一个唯一的整数.你可以按你想要的顺序对这套卡片进行排序. 最初,这些卡牌在牌组里是正面朝下的(即,未显示状态). 现在,重复执行以下步骤,直到显示所有卡牌为止: 从 ...

  4. js实现选中div内容并复制到剪切板

    function copyUrl () { var div = document.getElementById('xxxx'); if (document.body.createTextRange) ...

  5. python-day8socket、粘包、并发、多用户ftp

    @以字符串名称形式引入外部模块:同级文件lib里面有个函数a打印66 1.解释器内部使用 m=__import__('lib')print(m.a()) 结果: 66 None 官方推荐用户使用 im ...

  6. orcal - 分组

    执行顺序 from where group by having select order by 多表查询与分组查询的时候,查询结果相当于是一张临时表,所有的分组是在临时表操作 分组统计查询 COUNT ...

  7. tornado架构分析1 从helloworld分析tornado架构

    最近公司需要我写一个高性能RESTful服务组件.我之前很少涉及这种高性能服务器架构,帮公司和平时没事玩都是写脚本级别的东西.虽然好多基础组件(sphinx.logging.configparse等) ...

  8. 断断续续Python看到现在

    没有项目的支持 承认自己实践不足 但心怀梦想 我一定可以的

  9. Linux_Ubuntu_C++编程_如何完成一个C++编写,调试,运行。

    倘若没装那个软件,系统会提示,根据提示装软件.

  10. part2

    一. 列表.元组操作 切片:取多个元素 #!/usr/bin/env python # _*_ coding:utf-8 _*_ #切片:取多个元素 names = ['cai','xiao','lo ...