[英]Angular js validation function returns before the api call for validation is completed
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
}
问题是validate()总是返回true,如果我更改validationStatus = false,那么它总是返回false。 GetNameValid是异步false,仍然返回GetStatusStatus在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);
}).then(function(validationStatus){
return validationStatus;
});
}
function checkValidInput(isValid) {
if(!isValid) {
return false;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.