转:http://www.cnblogs.com/gsgs/p/6753682.html

element-ui的官网上写的自定义表单验证,方法都是写在单vue文件中的,不容易共享。怎么使用vuex将方法共享出来,各个组件都能用呢?

如下是一个验证age的数据,

rules:{

  age:[{required:true,trigger:'blur',validator:checkAge}]

}

required:true  指提示必须要填,也就是input那个红色星星,必填的标志,对数据是不影响的。

trigger:‘blur’,当失去焦点就进行一次验证。

validator:checkAge  我这儿我定义了一个checkAge函数,写在data中return的前面。这个其实只是个传参函数

思路:当失去焦点,会使validator验证会调用一次checkAge函数。并且会给checkAge默认传参数,checkAge(rules,value,callback){},value是input框中的内容,callback是回调函数。这3个参数是关键,必须要传给vuex store中的验证函数。

这儿要提醒一点:store中传过来的共享方法,并不是实实在在的方法,不管是map或者dispatck出来的,都不是原始方法,也就是说,不能如下这么干:

methods:map['checkAge'],
mounted(){
  this.rules.age[0].validator=this.checkAge //这样出错,这个checkAge不是正常的方法,被包装过。如果是state数据是可以直接这样干的。
}

因此,写一个转换函数:

data(){
  let checkAge=(rules,value,callback)=>{ //转换函数,主要目的是传给store内方法的参数。
    this.$store.dispatch('checkAge',{rules,value,callback})//这儿的checkAge是写在store中的,vuex规定参数必须传对象。
  }
  return {
    rules:{
      age:[{required:true,trigger:'blur',validator:checkAge}]//主要格式是标准json。
    },
    msg:{
      age:''
    }
  }
}

剩下的只需要在store中的actions内写上验证方法就行了。

//store中写:
let actions = {
checkAge({ commit }, obj) {//这个obj就是需要的参数,这个blur事件经过validator包装后的参数。随后的就跟官网上的一样了,随意写。
if (!obj.value) {
obj.cb(new Error('年龄不能为空'))
} else if (typeof obj.value != 'number') {
obj.cb(new Error('年龄必须为数字'))
} else {
if (obj.value > 100) {
obj.cb(new Error("年龄要打破记录了"))
} else if (obj.value < 0) {
obj.cb(new Error('年龄小了点,无法接受'))
} else {
obj.cb()
}
}
commit('dd')
}
}
let mutations={
  dd(){}
}
export default new Vuex.Store({
  actions,
  mutations
})
 

【21】vuex 与element iu表单校验的更多相关文章

  1. element的表单校验自动定位到该位置

    遇到的项目问题是在每个折叠面板里边都有不同的表单,用element上的校验时,若有没填写的表单或不符合表单格式的要求,则自动展开该折叠面板,且页面定位到没校验成功的表单   this.$refs.fo ...

  2. js--吐血总结最近遇到的变态表单校验---element+原生+jq+easyUI(前端职业生涯见过的最烦的校验)

    最近写了无数各种形式的表单,记录下奇奇怪怪的校验规则~ 一:首先是element自带的rules校验规则: element作为常用框架,自带rules属性简单易懂,官方文档一目了然,不再赘述,应付常用 ...

  3. vue+element表单校验功能

    要实现这个功能其实并不难,element组件直接用就可以, 但是我在使用过程中碰到了几个坑,就记录下来,分享给大家,避免落坑,话不多说,直接上过程...... 表单校验功能:   实现这个功能,总共分 ...

  4. js-动态表单校验-吐血总结最近遇到的变态表单校验2---element+原生

    上一部分总结了基础常用的js表单校验,包括原生以及框架,下面来总结这一个月涉及到的动态校验: 动态表单校验大致分为三种情况: 1. 首先是固定校验规则,但是表单组件是动态生成的,例如:在表单或者表格里 ...

  5. Vue Element-ui表单校验规则,你掌握了哪些?

    1.前言   Element-ui表单校验规则,使得错误提示可以直接在form-item下面显示,无需弹出框,因此还是很好用的.   我在做了登录页面的表单校验后,一度以为我已经很了解表单的校验规则. ...

  6. 深入了解Element Form表单动态验证问题 转载

    随风丶逆风 2020-04-03 15:36:41  2208  收藏 3 分类专栏: Vue 随笔 文章标签: 动态验证 el-form elementUI 表单验证 版权 在上一篇<vue ...

  7. 利用jquery.validate以及bootstrap的tooltip开发气泡式的表单校验组件

    表单校验是页面开发中非常常见的一类需求,相信每个前端开发人员都有这方面的经验.网上有很多成熟的表单校验框架,虽然按照它们默认的设计,用起来没有多大的问题,但是在实际工作中,表单校验有可能有比较复杂的个 ...

  8. AngularJS 1.2.x 学习笔记(表单校验篇)

    https://my.oschina.net/cokolin/blog/526911 摘要: 本文首发于 blog.csdn.net/vipshop_ebs/article/details/39472 ...

  9. bootstrap+jQuery.validate表单校验

    谈谈表单校验 这大概是一种惯例,学习前台后台最开始接触的业务都是用户注册和登录.现在社会坚持以人为本的理念,在网站开发过程同样如此.User是我们面对较多的对象,也是较核心的对象.最开始的用户注册和登 ...

随机推荐

  1. MySQL的备份与恢复理解与备份策略

    MySQL的备份主要分为逻辑备份和物理备份 逻辑备份 在MySQL中逻辑备份的最大优点是对各种存储引擎都可以用同样的方法来备份.而物理备份则不同,不同的存储引擎有着不同的备份方法.Mysql中的逻辑备 ...

  2. Windows Server 2008 正式版下载汇总

    windows 2008是微软推出的新一代服务器专用系统版本, 具有良好的用户体验以及应用程序,windows 2008大幅提升了web服务以及应用程序的性能, 让企业在提供和维护资源服务的时候更加得 ...

  3. 【STM32】IIC的基本原理(实例:普通IO口模拟IIC时序读取24C02)(转载)

     版权声明:本文为博主原创文章,允许转载,但希望标注转载来源. https://blog.csdn.net/qq_38410730/article/details/80312357 IIC的基本介绍 ...

  4. DFS:POJ1190-生日蛋糕(基础搜索)

    生日蛋糕 Time Limit: 1000MS Memory Limit: 10000K 描述 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体. ...

  5. Sublime Text配置python以及快捷键总结

    1.打开Tools > Build System > New Build System.. 2.点击New Build System后,会生成一个空配置文件,在这个配置文件内覆盖配置信息, ...

  6. Linux命令之---cat

    命令简介 cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. 命令格式 cat [选项] [文 ...

  7. complex类的定义、实现

    复数类complex的定义.实现(求模.复数加法) #include <iostream> #include <cmath> using namespace std; clas ...

  8. python 二——函数、装饰器、生成器、面向对象编程(初级)

    本节内容 1.函数 2.装饰器 3.生成器 4.类 一.函数 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 函数式 ...

  9. IOS开发学习笔记013-内存管理

    内存管理 1.基本知识 2.关闭ARC机制 3.@property 4.循环引用 5.自动释放池 6.内存管理总结 一.基本知识 内存的分类 栈:局部变量 堆:动态申请的对象,变量等 全局(静态):s ...

  10. log4j2用asyncRoot配置异步日志是如何使用disruptor

    用asyncRoot配置对应的对接disruptor类是AsyncLoggerConfigDisruptor,用Log4jContextSelector启动参数配置全局异步的对应的对接disrupto ...