上周换到新项目组,依然是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. Condtion type Z123 is mandatory!

    user exit: MV45AFZZ->userexit_save_document_prepare ZI_EXIT_SD_CNEMS_SAVE_PREPARE ***Start of ins ...

  2. altera DDR2 IP核之仿真

    在生成的IP核文件夹下,有一个testbench文件夹,里面包含了一个example测试激励和DDR2仿真模型. 如下 20 -rw-r--r-- 1 Administrator 197121 171 ...

  3. docker 搭建 hustoj

    docker 搭建 hustoj hustoj 是个GPL开源的OJ,其提供了docker形式的安装方式. 为执行方便,选择使用aliyun提供的docker镜像来加速安装. 拉取镜像 docker ...

  4. no module named selenium

    I am having the same problem. I have downgraded selenium for now. pip uninstall selenium pip install ...

  5. 通过java程序调用ant build.xml配置文件中指定的target

    一.概述 通过ant实现项目的自动化部署,jar包生成,替换,tomcat关停.启动,查看项目日志: 通过java程序调用已编辑好的ant脚本build.xml配置文件中指定的target: 文中文件 ...

  6. Exp6 信息搜集与漏洞扫描 20164313 杜桂鑫

    1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 2.实践内容 (1)各种搜索技巧的应用 1.使用搜索引擎 在百度搜索栏内输入 site:com filetype:doc 北京电子科技学院 ...

  7. 【学习】python文件读写,用with open as的好处,非常好【转载】

    原文链接:http://www.cnblogs.com/ymjyqsx/p/6554817.html 备注:博主还有很多值得学习的笔记,遇到问题可以拜读,非常感谢博主的总结 读写文件是最常见的IO操作 ...

  8. javascript基础知识笔记-自用

    笔记内容根据个人基础知识不足不明白之处做的记录.主要看的:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript 1.变量,变量的名字又叫标识符 ...

  9. [python]关于函数传入参数

    在传入参数时有两个特殊参数,*args,**kwargs,功能如下: def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ' ...

  10. JVM内存模型和面试题解析

    一.JVM运行时区域 其中, 线程私有的:程序计数器,虚拟机栈,本地方法栈 线程共享的:堆,方法区,直接内存 1 程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示 ...