千家信息网

vue怎么表单验证validate

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,vue怎么表单验证(form)validate,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.原理解释考虑我们看一下我
千家信息网最后更新 2024年11月30日vue怎么表单验证validate

vue怎么表单验证(form)validate,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1.原理解释

考虑

我们看一下我们可以用form去整体触发校验也可以单个input来触发form-item 进行校验 童鞋们现在可能感觉还是没懂,没关系继续往下看。

2.派发和广播

为什么要用广播和派发呢。通常我们和业务没有关系的组件尽量不要使用vuex和bus(事件总线)。 下面我送上广播和派发的代码。我们在需要调用组件绑上 this.$on('event',res=>()) ,通过派发和广播进行调用 $emit

  • 派发是向上查找且只调用1个

  • 广播是向下查找调用多个

  • 注意⚠️所有的组件都要写上name

  • 通过混合器 mixins 来使用

emitter.js/** * 递归使用 call 方式this指向 * @param componentName // 需要找的组件的名称 * @param eventName // 事件名称 * @param params // 需要传递的参数 */function broadcast(componentName, eventName, params) { // 循环子节点找到名称一样的子节点 否则 递归 当前子节点 this.$children.map(child=>{  if (componentName===child.$options.name) {   child.$emit.apply(child,[eventName].concat(params))  }else {   broadcast.apply(child,[componentName,eventName].concat(params))  } })}export default { methods: {  /**   * 派发 (向上查找) (一个)   * @param componentName // 需要找的组件的名称   * @param eventName // 事件名称   * @param params // 需要传递的参数   */  dispatch(componentName, eventName, params) {   let parent = this.$parent || this.$root;//$parent 找到最近的父节点 $root 根节点   let name = parent.$options.name; // 获取当前组件实例的name   // 如果当前有节点 && 当前没名称 且 当前名称等于需要传进来的名称的时候就去查找当前的节点   // 循环出当前名称的一样的组件实例   while (parent && (!name||name!==componentName)) {    parent = parent.$parent;    if (parent) {     name = parent.$options.name;    }   }   // 有节点表示当前找到了name一样的实例   if (parent) {    parent.$emit.apply(parent,[eventName].concat(params))   }  },  /**   * 广播 (向下查找) (广播多个)   * @param componentName // 需要找的组件的名称   * @param eventName // 事件名称   * @param params // 需要传递的参数   */  broadcast(componentName, eventName, params) {   broadcast.call(this,componentName, eventName, params)  } }}

3.async-validator

不懂 async-validator 可以去官网看看 github

yarn add async-validator // 因为当前这个插件是需要打包到项目里的所以不能加-D

4.api设计

我们看一下下面 element 官网的图`

form 有2个注入的字段 :rules 规则,和 :model 当前form的值会通过 model 的值和 rules 进行匹配来进行校验.

form-item 有2个注入的字段 lableprop ( prop )是来和 form 进行匹配来获取当前的 form-item 的值的

input 其实有当前的 @input 的方法。 v-model 就不解释了

form

我们在 form 先开始注入当前所有的 form-item 实例(获取)

created 会在生命周期开始的时候绑定和删除当前实例的方法。通常绑定都在页面dom开始前调用需要在 dom 加载完

provide 配合inject 使用让子组件可以调用当前父组件的方法以及data

下面都写了备注可以放心食用(经过测试当前是可以进行校验的)

form.vue

5.form-item

  • form-item比较复杂我们一个一个讲

  • isRequired来判断当前是否需要必填

  • validateState来判断当前校验的状态

  • validateMessage当前的错误的值

  • inject: ['form'] 我们就可以通过this.from.xxx来调用父组件的事件以及值了

  • computed下的fieldValue可能在不停的变化所以我们通过计算属性来使用

  • initialValue 默认的值我们在mounted的时候且当前需要进行校验的时候(prop有的时候)会赋值

  • mixins: [Emitter]混合器就是里面的方法以及date都可以在当前调用使用频繁的都可以放在混合器里面

  • 我们form-item 会传入input的两个方法blur和change(input原生使用的@input)通过form传入的校验rules里面的trigger来判断

form-item.vue

5.input

  • value 支持一个入参

  • 因为当前是一个 input 注入的参数是不能直接放到 input 里面使用的所以先赋值给了 defaultValue 然后用 watch 来不停给 defaultValue 赋值达到一个父组件修改后的一个绑定

最后

最后给上一个当前可以的使用方式

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

方法 组件 名称 实例 事件 规则 时候 广播 节点 验证 表单 参数 方式 支持 混合器 缓存 混合 函数 多个 字段 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 华游网络技术有限公司怎么样 北京安卓软件开发公司哪家好 高考志愿计算机网络技术 科韵路电子软件开发招聘网 查询是否已连接服务器 2017年上网络安全事件 2020年云服务器怎么买 安徽人工智能软件开发服务费 sql自动清除数据库备份 山西便民平台软件开发 大飞哥网络安全37 网络安全管理规范具有一般要求 企业微信微文档服务器异常 河北一站式软件开发批发价 宝山区营销软件开发销售电话 商河软件开发入门教学在线学习 大专学网络技术专业 保定谦诚软件开发有限公司 安卓手机数据库问题 金山区使用软件开发解决方案 数据库缺省值代码 网络安全密钥怎么取消 滴滴没有什么服务器 怎样安全清楚手机数据库 服务器的正常工作 eas连接不了服务器 我的世界40人大型服务器 数据库项目管理系统需求分析 网络安全有名的公司有哪些 永清廊坊erp网络技术
0