vue动态绑定组件子父组件多表单验证功能的实现代码


Posted in Javascript onMay 14, 2018

vue动态绑定组件子父组件多表单验证功能的实现代码

前端项目中经常会下拉或者选项卡,如果通过if,else或者switch去判断加载的话会产生大量冗余代码和变量定义,而且都写在一起后人很难维护。

Vue核心在于组件,如果有内容通过选项卡或者下拉框切换用动态加载子组件最好不过。

vue动态绑定组件子父组件多表单验证功能的实现代码

如图: selects文件夹中,index只负责公共数据(当然公共数据也可以写在其他文件,只留一个入口文件),而comp文件夹中的几个组件则通过动态加载。

动态加载子组件:component

// 给下拉框绑定下拉列表的索引
<el-select v-model="value" placeholder="请选择" style="float:left" @change="selectNum(value)">
     <el-option
         v-for="item in options"
         :key="item.value"
         :label="item.label"
         :value="item.value">
     </el-option>
</el-select>

引入组件后放到一个数组内,通过控制对应的索引达到加载组件的目的

vue动态绑定组件子父组件多表单验证功能的实现代码

// 加载组件:每次下拉框监听则给changValue新赋值,如果下拉options的value从0开始则绑定组件时不用-1
<component :is="componentName[changValue - 1]" ref="subjectChild" @isSubmit="getSubmit"></component>

子父组件表单一起验证:

按钮放在父组件内:

子组件:自定义验证规则

data(){
  const num = (rule, value, callback) => {
    let num = /^\d+$/
    if(!value){
      return callback(new Error('数量不能为空'))
    }else if(!num.test(value)){
      return callback(new Error('数量必须为数字'))
    }else{
      callback()
    }
  }
  const price = (rule, value, callback) => {
    let num2 = /^\d+$/
    if(!value){
      return callback(new Error('单价不能为空'))
    }else if(!num2.test(value)){
      return callback(new Error('单价必须为数字'))
    }else{
      callback()
    }
  }
  return{
    // 验证
    apple:{
      num: '',
      price: '',
    },
    reg:{
      num: [
        { validator: num, trigger: 'blur' }
      ],
      price: [
        { validator: price, trigger: 'blur' }
      ]
    }
  }
// 验证
  submitForm(){
    this.$refs.apple.validate((valid) => {
      if(valid){
        this.$emit('isSubmit',["subject",true])
      }else{
        this.$emit('isSubmit',["subject",false])
        return false
      }
    })
  }

父组件:

// 获取子组件状态
  getSubmit(type){
    this.isRule = type[1]
  },
// 公共数据验证
  submitForm2(){
    // 如果选中了子组件
    if(this.changValue){
      this.$refs.subjectChild.submitForm()
    }
    let _this = this
    let p1 = new Promise((resolve, reject) => {
      _this.$refs.ruleForm.validate((valid) => {
        if(valid){
          resolve()
        }
      })
    })
    if(_this.isRule){
      Promise.all([p1]).then(() => {
        console.log('正确')
      })
      .catch(() => {
        console.log('错误')
      })
    }else{
      console.log('错误')
    }
  },

总结

以上所述是小编给大家介绍的vue动态绑定组件子父组件多表单验证功能的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js判断FCKeditor内容是否为空的两种形式
May 14 Javascript
js实现幻灯片播放图片示例代码
Nov 07 Javascript
JS button按钮实现submit按钮提交效果
Nov 01 Javascript
bootstrap常用组件之头部导航实现代码
Apr 20 Javascript
angularjs2 ng2 密码隐藏显示的实例代码
Aug 01 Javascript
node.js自动上传ftp的脚本分享
Jun 16 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
Sep 25 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
Dec 24 Javascript
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
Mar 07 Javascript
VUE脚手架具体使用方法
May 20 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
Jun 10 Javascript
js实现随机div颜色位置 类似满天星效果
Oct 24 Javascript
jQuery中元素选择器(element)简单用法示例
May 14 #jQuery
jQuery中的类名选择器(.class)用法简单示例
May 14 #jQuery
vue引入js数字小键盘的实现代码
May 14 #Javascript
vue移动端路由切换实例分析
May 14 #Javascript
对node.js中render和send的用法详解
May 14 #Javascript
利用vscode调试编译后的js代码详解
May 14 #Javascript
vue的toast弹窗组件实例详解
May 14 #Javascript
You might like
PHP实现根据浏览器跳转不同语言页面代码
2013/08/02 PHP
3个PHP多维数组转为一维数组的方法实例
2014/03/13 PHP
Sublime里直接运行PHP配置方法
2014/11/28 PHP
PHP实现加强版加密解密类实例
2015/07/29 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
2015/12/17 PHP
WordPress中自定义后台管理界面配色方案的小技巧
2015/12/29 PHP
jquery实用代码片段集合
2010/08/12 Javascript
Javascript将string类型转换int类型
2010/12/09 Javascript
jquery cookie实现的简单换肤功能适合小网站
2013/08/25 Javascript
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
2017/01/13 Javascript
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
利用express启动一个server服务的方法
2017/09/17 Javascript
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
详解mpvue开发微信小程序基础知识
2019/09/23 Javascript
vue全局使用axios的操作
2020/09/08 Javascript
vue3.0生命周期的示例代码
2020/09/24 Javascript
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
基于Python代码编辑器的选用(详解)
2017/09/13 Python
python中的随机函数random的用法示例
2018/01/27 Python
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
交通志愿者活动总结
2014/06/27 职场文书
法律意见书范文
2015/05/20 职场文书
关于车尾的标语大全
2015/08/11 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书