Vee-validate(VueJS) - 异步评估条件

时间:2017-05-22 06:47:44

标签: vue.js vuejs2

我可以制作一个基于AJAX请求返回true / false的自定义验证规则吗?问题是当AJAX调用完成时, validate 调用已经完成运行。

我是否需要根据字段有效/无效的规则设置/取消设置布尔变量?

  const isValidNameRule = {
    getMessage(field)
    {
      return "The name must be unique."
    },
    validate(validatingName)
    {
      var formData = new FormData();
      formData.append("validatingName", validatingName);

      this.$http.post("/api/isValid?name=" + validatingName, formData)
        .then(function (response) {
          // success
          return true;
        }, function (response) {
          // error
          return false; 
        });
    }
  };

1 个答案:

答案 0 :(得分:0)

不知道如何与Promises合作。 最终通过扩展其中一个官方样本来实现它:

 const customRule = {
    getMessage(field, params, data) {
      return (data && data.message) || 'Something went wrong';
    },
    validate(aValue) {

      return new Promise(resolve => {

        var formData = new FormData();
        formData.append("nameFilter", aValue);

        $.ajax({
          type: "POST",
          url: url,
          data: {
            action: "validate",
            value: aValue,
          }
        }).done(function (data) {

          if (!ok)
          {
            resolve({
              valid: false,
              data: {message: "Condition not met"}
            });
          }
          else
          {
            resolve({
              valid: !! aValue,
              data: undefined
            });
          }

        });

      });
    }
  };