繁体   English   中英

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,仍然返回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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM