Angular js的验证函数在api调用验证完成之前返回
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,仍然返回validationStatus在GetNameValid()完成执行之前被调用,因此checkValidInput永远不会被调用,实际的验证永远不会发生。对于这种需要在函数返回之前等待ajax调用的场景,是否还有其他方法?任何指向正确方向的文章或博客都会有所帮助。由于
我认为你能做的是将另一个then链接到你已经拥有的那个then上,这样就可以达到你想要的效果了。虽然这是未经测试的,但我认为它应该工作。
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;
}
}
相关文章:
- 同步调用,直到用户通过angular验证为访问者
- 使用对服务器的Ajax调用验证表单字段—Learning Ajax
- javascript验证和ajax调用同时不起作用
- Passport.js成功的身份验证根本没有调用
- 如何验证我对StockTwits API的调用
- 如何使用javascript验证表单中的数据,然后调用php页面
- 概念验证模型控制器调用正确的实例
- 如果($_SERVER[“REQUEST_METHOD”]=“POST”)条件在ajax调用不同的php文件进行验证和提
- TinyMCE验证给出错误:无法调用方法'getContent'的未定义
- 使用 Ajax 调用进行验证不起作用
- jQuery 验证 - 调用某些元素的 .valid() 方法不会清除错误
- 按照承诺,通过与chai的函数调用验证已解析承诺的内容
- jQuery.show()调用中弹出HTML5表单验证错误
- 未调用jQuery验证
- 我需要帮助来调用add()函数和验证函数,所以首先它将验证和然后添加
- 一键点击首先调用javascript,执行验证,然后调用控制器方法
- 如何验证for循环是否完成了node js中的所有迭代,循环是否包含带回调的函数调用
- jQuery验证,在继续之前等待服务调用响应
- 使用Google+登录验证调用应用引擎后端
- 对Twitter API进行身份验证调用,以避免速率限制