a-form-model-item设置校验永远慢一步或者无效

初始代码:

// html部分:      
      <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
        <a-row>
          <a-col :span="24">
            <a-form-model-item label="名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="columnName">
              <a-input v-model="model.columnName" placeholder="请输入名称"></a-input>
            </a-form-model-item>
          </a-col>
        </a-row>
      </a-form-model>

// script部分: data
    data() {
      return {
        validatorRules: {
          columnName: [
            {required: true, message: '请输入名称',validator: this.validateIdentity, trigger: 'change',},
          ],
        },
      }
    }

// methods
   methods: {
     // 验证唯一
     // rule:采用的规则,value:输入的值,callback:回调函数
      validateIdentity(rule, value, callback) {
        if (value) {
          // 发送请求 验证输入的值是否在数据库中重复
          getAction(this.url.list, {value: value}).then((res) => {
            if (res.result.records.length) {
              callback('名称重复')
            } else {
              callback()
            }
          })
        } else {
          callback('请输入名称')
        }
      },
    }

出现的效果:不管如何都只出“请输入名称”的提示信息,明明控制台callback的信息是“名称重复”

 修改:

 //验证唯一
      validateIdentity(rule, value, callback) {
        if (value) {
          // callback()
          getAction(this.url.list, {value: value}).then((res) => {
            if (res.result.records.length) {
              this.validatorRules.columnName[0].message='名称重复'
              callback('名称重复')
            } else {
              callback()
            }
          })
        } else {
          this.validatorRules.columnName[0].message='请输入名称'
          callback('请输入名称')
        }
      },

 出现的效果:应该出现的提示信息总是慢一步(应该是控制台的显示信息)

 最终!终于可以了,以下script部分代码: 

    data() {
      return {
        validatorRules: {
          columnName: [
            {required: true, message: '请输入纵队名称', trigger: 'change',},
            {validator: this.validateIdentity, trigger: 'change'},
          ],
        },
      }
    }

   methods: {
      validateIdentity(rule, value, callback) {
        if (value) {
         getAction(this.url.list, {value: value}).then((res) => {
            if (res.result.records.length) {
              callback(new Error('名称重复'))
            } else {
              callback()
            }
        } else {
          callback('请输入名称')
        }
      },
    }

 显示效果:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值