公司项目重构,经过商定使用element ui。在重构项目的时候发现一下element ui上很蛋疼的东西。

例如,这个form表单就是一个。趁着在高铁上没事,把想写的东西写一下。

先说一下element ui提交form表单的时候,如果没有进入我们预想的代码流程,一般就是你写的自定义验证规则有误。

例如如下代码。验证镜像的名称是否重复的一个方法。每个if-else都需要有内容。如若满足就要有一个callback()。

反正我是被这个地方给坑了,之前写代码,一般就是if满足条件之后怎么怎么样,这次必须return 一下内容

let that = this;
var checkName = function (rule, value, callback) {
let re = /^[A-Za-z0-9_\.\-\u4e00-\u9faf]+$/;
if (!value) {
callback(new Error('该字段为必填项'));
} else {
if (re.test(value)) {
let url = that.prefix + '/yr_images/create_image/';
let data = {
is_check_name: 1,
name: value
};
that.Axios({
method: 'post',
url: url,
data: data,
transformRequest:function (data) {
let ret = '';
for (let it in data) {
ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
}
return ret.slice(0, ret.length - 1);
}
})
.then(function (res) {
if (res.data.error_code != -200) {
return callback(new Error('名称重复'))
} else {
return callback()
}
})
.catch(function (err) {
console.log(err);
})
} else {
callback(new Error('输入不符合规则'))
}
}
};

言归正传,我们公司验证表单大部分是弹框内验证的。

当我打开弹框,form验证规则不满足,然后我关闭弹框,按理说应该取消红色提示,可是没有。

想到form有一个重置按钮,然后想到完全可以使用该方法。

可是打开之后之后,在控制台会报错,说该方法不存在!

上网查原因,一大堆都有,最后查到是element ui 打开弹框的方法是自带延迟的。

于是,我就用了下面的方法。

setTimeout(function () {
that.$refs['dialogContent'].resetFields();
},300)

还是有问题,如果网络慢怎么办,可能还是报错。

于是想到了js的try catch方法,我在外部给他包裹已一层try ,catch语句。问题解决!但是,测试最后提了个bug,那就是数据驱动的vue,页面内容没有改变。

内容被重复渲染。一直没有找到问题。最后才发现是setTimeout造成的!!!!!现在想想也傻,既然后try,catch了,为什么还要增加一个settimeout!!

try {
setTimeout(function () {
that.$refs['dialogContent'].resetFields();
},300)
} catch (e) { }

最终方法如下:

try {
that.$refs['dialogContent'].resetFields();
} catch (e) { }

问题解决

element ui form表单清空规则的更多相关文章

  1. element ui FORM表单

    form表单 Form-Item Slot [label] 旧版语法 <el-form-item label="活动名称" prop="name"> ...

  2. 封装Vue Element的form表单组件

    前两天封装了一个基于vue和Element的table表格组件,阅读的人还是很多的,看来大家都是很认同组件化.高复用这种开发模式的,毕竟开发效率高,代码优雅,逼格高嘛.虽然这两天我的心情很糟糕,就像& ...

  3. vue+element ui 重置表单

    <el-dialog :title="addForm.title" :visible.sync="dialogFormVisible" width=&qu ...

  4. vue + element ui 阻止表单输入框回车刷新页面

    问题 在 vue+element ui 中只有一个输入框(el-input)的情况下,回车会提交表单. 解决方案 在 el-form 上加上 @submit.native.prevent 这个则会阻止 ...

  5. Easy UI form表单提交 IE浏览器不执行success ,以及 datagrid 展示过慢

    最近在做一个Easy ui的项目 发现了一些问题,在这里总结下 1.表单提交,后端代码 public ActionResult Save(Request model) { ResultInfo _in ...

  6. 20151124 Jquery UI form 表单变成dialog

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. form表单清空、重置

    form_live为formID <input type="button" value="重置" onclick="$('#form_live' ...

  8. vue elementui form表单验证

    最近我们公司将前端框架由easyui 改为 vue+elementui .自学vue两周 就开始了爬坑之路.业余时间给大家分享一下心得,技术新手加上第一次分享(小激动),有什么不足的地方欢迎大家指正, ...

  9. element-ui Form表单验证

    element-ui Form表单验证规则全解 element的form表单非常好用,自带了验证规则,用起来很方便,官网给的案例对于一些普通场景完全没问题,不过一些复杂场景的验证还得自己多看文档摸索, ...

随机推荐

  1. C# 运用DirectoryInfo类和FileInfo类

    DirectoryInfo类和FileInfo类的基类都是FileSystemInfo类,这个类是一个抽象类,也就是说你不可以实例化该类,只能通过继承产生其子类并实例化其子类.然而你却可以运用由该类定 ...

  2. 如何修改魔兽争霸war3分辨率

    如何修改魔兽争霸war3 分辨率 有时候发现老电脑从XP系统升级到WIN7之后,发现玩魔兽不能全屏了(2边会有一些黑屏的).最后检查发现是魔兽在安装注册表之后显示的分辨率跟电脑的实际分辨率不同导致的. ...

  3. vuex:使用思路总结

    1. vuex是什么? 是一种数据状态管理机制. 2.vuex的构成和作用: state: 存放需要被管理的属性的对象 getters: 方便在state中做集中处理,可以把state作为第一个参数 ...

  4. STL笔记(こ)--删除数组中重复元素

    使用STL中的Unique函数: #include<bits/stdc++.h> using namespace std; void fun(int &n) //配套for_eac ...

  5. 1061: [Noi2008]志愿者招募

    Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 5742  Solved: 3449[Submit][Status][Discuss] Descript ...

  6. SAP增强Enhancement

    第一代:基于源码增强(子过程subroutine) 第一代增强基于源代码,是SAP提供的一个空代码的子过程.在这个子过程中用户可以添加自己的代码,控制自己的需求.这类增强集中在一些文件名倒数第二个字符 ...

  7. 二、Linux 系统启动过程

    Linux 系统启动过程 linux启动时我们会看到许多启动信息. Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行 init. 系统初始化. 建立终端 ...

  8. vue.js 发布后路径引用问题

    在发布到iis目录下时候,如果放在网站的根目录下的时候,是不会有什么问题的 但是一旦放在了非根目录的其他文件夹里面,这时候index.html里引用的js和css文件路径都会找不到 错误如下 打开in ...

  9. tcl之基本语法—3

  10. 数据结构-二叉树(Binary Tree)

    #include <stdio.h> #include <string.h> #include <stdlib.h> #define LIST_INIT_SIZE ...