泛览天下

阅读,看尽天下事

在不影响方法默认传参情况下新增传参

2022-08-04 01:44:01


在做iview表单验证时出现了一个问题,我的程序中多次用到了表单中对IP的校验,那我想做一个封装,能通过将IP传参后进行判断,于是就有了下面的方法代码示例//封装好的表单校验方法const validateIP = (rule, value


在做iview表单验证时出现了一个问题,我的程序中多次用到了表单中对IP的校验,那我想做一个封装,能通过将IP传参后进行判断,于是就有了下面的方法


代码示例
//封装好的表单校验方法
const validateIP = (rule, value, callback, ip) => {
      if(ip) {
        let flag = true, valdata = ip.split("\n");
        var reg = /^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$/;
        for(var i=0;i<valdata.length;i++){
          if(!valdata[i].trim() || !reg.test(valdata[i])){
            flag = false
            callback(new Error('IP格式不正确'))
          } else if(flag && valdata.length <= i+1) {
            callback()
          }
        }
      } else callback('IP地址不能为空')
    }
//表单校验规则
ruleValidate: {
        ip: { 
          required: true,
          trigger: 'change,blur',
          validator: ((rule, value, callback) => {
            //这里是关键,使用闭包完成新参数的传入
            validateIP(rule, value, callback, this.record.ip)
          })
        }
      }
}