我使用Angular 1并且必须在控制器中实现一些验证逻辑,如下所示:
$scope.onValidate = function(){
var orderId = $resource("/getorderId");
if (!orderId){
return false;
}
var isValidAddress = $resource("/checkAddress")
if (!isValidAddress){
return false;
}
// some other checking
return true;
}
但是我们知道$ resource是异步的并且会立即返回。我的问题是Angular 1中应该采用哪种方法来执行这样的顺序检查,这种检查需要从服务器端获取结果,并且应该等到所有条件都被检查后再返回。
答案 0 :(得分:0)
我的理解是,您希望对输入值的更改进行验证,您需要在输入字段$asyncValidator
上使用ngModel
。
ngModel.$asyncValidators.myValidation = function(modelValue, viewValue) {
var value = modelValue || viewValue;
var orderPromise = $resource("/getorderId").then(function(orderId){
if (!orderId)
return false;
});
var isValidAddressPromise = $resource("/checkAddress").then(function(orderId){
if (!isValidAddress)
return false;
});
// some other checking
return $q.all([orderPromise, isValidAddressPromise]).then(function(value){
var result = value[0] || value[1]; //depends on situation change your condition
if(result) return result;
return $q.reject(result);
})
};