Javascript Angular js验证函数在api验证调用完成之前返回
问题是validate()总是返回true。如果我更改validationStatus=false,那么它总是返回false。GetNameValid为async false仍然返回validationStatus在GetNameValid()完成执行之前被调用,因此永远不会调用checkValidInput,也永远不会发生实际验证。 对于这种情况,是否有另一种方法需要在函数返回之前等待ajax调用。 任何指向正确方向的文章或博客都会有所帮助。Javascript Angular js验证函数在api验证调用完成之前返回,javascript,jquery,ajax,asp.net-mvc,angularjs,Javascript,Jquery,Ajax,Asp.net Mvc,Angularjs,问题是validate()总是返回true。如果我更改validationStatus=false,那么它总是返回false。GetNameValid为async false仍然返回validationStatus在GetNameValid()完成执行之前被调用,因此永远不会调用checkValidInput,也永远不会发生实际验证。 对于这种情况,是否有另一种方法需要在函数返回之前等待ajax调用。 任何指向正确方向的文章或博客都会有所帮助。 谢谢我想你能做的就是把另一个链接在一起,然后连接到
谢谢我想你能做的就是把另一个链接在一起,然后连接到你已经拥有的那一个上,这样你就可以随心所欲了。虽然这是未经测试的,但我认为它应该有效
if (!validate()) {
return;
};
function validate() {
var nameIsValid = false;
var validationStatus = true;
dataApi.GetNameValid(viewModel.Name).then(function (data) {
nameIsValid = data.isValid;
validationStatus = checkValidInput(nameIsValid);
});
return validationStatus;
}
function checkValidInput(isValid)
{
if(!isValid){
return false;
}
//chk other input field validations
}
我认为你能做的就是把另一个链子连在一起,然后连到你已经拥有的那个链子上,这样你就可以随心所欲了。虽然这是未经测试的,但我认为它应该有效
if (!validate()) {
return;
};
function validate() {
var nameIsValid = false;
var validationStatus = true;
dataApi.GetNameValid(viewModel.Name).then(function (data) {
nameIsValid = data.isValid;
validationStatus = checkValidInput(nameIsValid);
});
return validationStatus;
}
function checkValidInput(isValid)
{
if(!isValid){
return false;
}
//chk other input field validations
}
返回dataApi.GetNameValid
并从then块返回验证状态。。通过它链接,并在scope/controller实例上设置一个属性,或者对它执行任何操作validate()。然后(function(validation){$scope.valid=validation})
@PSL我尝试了这个方法,但仍然不起作用。行为类似。返回dataApi.getnamefalid
并从then块返回验证状态。。通过它链接,并在scope/controller实例上设置一个属性,或者对它执行任何操作validate()。然后(function(validation){$scope.valid=validation})
@PSL我尝试了这个方法,但仍然不起作用。行为类似。返回dataApi.getnamefalid
并从then块返回验证状态。。通过它链接并在scope/controller实例上设置一个属性,或者对它执行任何操作validate()。。