angularjs - 如何使用 Spring Boot 检查电子邮件是否已存在于 AngularJS 中

标签 angularjs spring

我想我几乎找到了问题的解决方案,但我仍然需要一些调整。

我有一个@RestController,我在其中执行此操作来检查用户是否存在

@RequestMapping(value = "/email")
public Boolean getByEmail(@RequestBody String email) {
    String userId;
    try {
        User user = userDao.findByEmail(email);
        userId = String.valueOf(user.getId());
        LOGGER.info(user.toString());
        LOGGER.info(userId);
    }
    catch (Exception ex) {
        LOGGER.info("email does not exist");
        return false;
    }
    LOGGER.info("Email does exist");
    return true;
}

在 AngularJs 中我做了这样的事情:

(function () {
    'use strict';

    angular
        .module('app')
        .controller('RegisterController', RegisterController);

    RegisterController.$inject = ['UserService', '$http' ];
    function RegisterController(UserService, $http) {
        var vm = this;

        vm.register = register;

        vm.error="This is a sample Error";

        function register() {

            testEmail();
            console.log(vm.user)
            console.log(("email must been verified before this"))

            //if the testEmail returns false Create a user else give an error
           // vm.dataLoading = true;
           // UserService.Create(vm.user)

        }

        function testEmail(){
            console.log("Check email")
            console.log(vm.user.email)
            console.log($http.post('/email',vm.user.email))
            return $http.get('/email',vm.user.email)
        }
    }

})();

我基本上想做的是找到一种方法让 testEmail 函数返回 truefalse

最佳答案

我建议像其中一条评论所述研究异步验证器,但如果您不喜欢该选项,这里有一些更多信息。

问题在于,由于 testEmail 函数发出异步 ajax 请求,因此调用后面的行将在 ajax 请求完成之前运行。您需要等待请求完成。请参阅下面的示例:

    function register() {

        //test email returns a promise object, you need to wait until it is resolved, passing the response from the server to the callback
        testEmail().then(function(response){

            //replace this with the appropriate response
            if(response.data.valid){
                console.log(vm.user)
                console.log(("email must been verified before this"))

                //if the testEmail returns false Create a user else give an error
                // vm.dataLoading = true;
                // UserService.Create(vm.user)
            }

        });

    }

关于angularjs - 如何使用 Spring Boot 检查电子邮件是否已存在于 AngularJS 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32845630/

相关文章:

javascript - 以下 AngularJS 代码更改底部边框颜色的正确语法是什么?

javascript - 我无法在 Angular 选择中显示值

angularjs - 在 Heroku 上使用 Gulp 部署 Angular 应用程序 : app crashed

java - 如何在 Spring TaskExecutor 中进行重试

java - 在 Spring ajax 方法中返回带有对象的消息供 java 脚本读取

javascript - 带有 json url 的 ionic 无限列表滚动

javascript - 如何解释在 Protractor 中使用 browser.sleep

java - TilesViewResolver 在部署为 war 时不工作

c# - asp mvc 到 spring mvc

java - Controller 映射未在启动时记录