公司项目重构,经过商定使用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. Angular 2 树节点的上下移动问题

    最近在做一个树节点的上下移动然后实现排序的问题.直接看图: 实现已选查询条件的上下移动.结合了primeng 的picklist 组件. 下面是html代码 <p-tabPanel header ...

  2. 二、Shell 变量

    Shell 变量 定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的 ...

  3. 分享自己写的基于Dapper的轻量级ORM框架~

    1.说明 本项目是一个使用.NET Standard 2.0开发的,基于 Dapper 的轻量级 ORM 框架,包含基本的CRUD以及根据表达式进行一些操作的方法,目前只针对单表,不包含多表连接操作. ...

  4. BFS:Open and Lock(一个数的逐位变化问题的搜索)

    解体心得: 1.关于定义四维数组的问题,在起初使用时,总是在运行时出错,找了很多方法,最后全部将BFS()部分函数写在主函数中,将四维数组定义在主函数中才解决了问题.运行成功后再次将四维数组定义为全局 ...

  5. mysql--timestamp加减

    利用timestamp()对timestamp类型进行秒加减操作: 1.加10秒: 2.减10秒:

  6. HDU 4005 The war 双连通分量 缩点

    题意: 有一个边带权的无向图,敌人可以任意在图中加一条边,然后你可以选择删除任意一条边使得图不连通,费用为被删除的边的权值. 求敌人在最优的情况下,使图不连通的最小费用. 分析: 首先求出边双连通分量 ...

  7. UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 19: ordinal not in range(128)

    解决方案: 1: 在网上找到的解决方案是: 在调用import matplotlib.pyplot as plt前 import sys sys.setdefaultencoding(“gbk”) 让 ...

  8. virsh命令管理虚拟机

    virsh命令管理虚拟机 libvirt有两种控制方式,命令行和图形界面. 1.图形界面:通过执行名virt-manager,启动libvirt的图形界面,在图形界面下可以一步一步的创建虚拟机,管理虚 ...

  9. IOS开发学习笔记023-UIToolBar的使用

    这里使用代码实现 大概过程: 1.创建工具条 2.创建插入条 3.添加头像.标签.删除按钮 4.点击头像获取标签信息 做一个简单的联系人列表,可以添加删除联系人,现在还没有添加头像和文字,接下来慢慢添 ...

  10. Leetcode 611.有效三角形的个数

    有效三角形的个数 给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数. 示例 1: 输入: [2,2,3,4] 输出: 3 解释: 有效的组合是: 2,3,4 (使用第一个 ...