2017-05-22 14 views
0

AJAXリクエストに基づいてtrue/falseを返すカスタム検証ルールを作成できますか?問題は、コールの検証が、AJAX呼び出しが完了すると実行が終了したことです。Vee-validate(VueJS) - 条件を非同期的に評価する

フィールドの有効/無効に基づいてブール変数を設定/設定解除するルールを設定する必要がありますか?

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; 
     }); 
    } 
    }; 

答えて

0

約束で作業する方法を知りませんでした。 最終的に、公式サンプルの1つを拡張して動作させました。

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 
      }); 
      } 

     }); 

     }); 
    } 
    }; 
関連する問題