search

Home  >  Q&A  >  body text

javascript - Angular在login页面显示http错误信息

html:

<p class="error_msg" ng-if="form_login.$submitted" ng-messages="form_login.$error" flex="initial">
    <p class="alertmsg" ng-message="required" flex">{{errormsg | i18next}}</p>
</p>

controller:

loginModule.controller("loginController", ['$http', '$window', '$rootScope', '$scope', '$location', 'authenticationService', '$i18next', function($http, $window, $rootScope, $scope, $location, authenticationService, $i18next){

    $scope.newclass = false;
    $scope.errormsg = 'login.alertmsg';
    $scope.login = function(){
        if($scope.form_login.$invalid){
            return false;
        }else{
            $scope.newclass = true;
            $scope.dataloading = true;
            authenticationService.login($scope.username, $scope.password, 
                function(response){
                if(response.data.status_code == 200){
                    $window.location.href = 'view/home.html';
                }else if(response.data.status_code == 500){
                    $scope.errormsg = 'error_code' + '.' +response.data.payload.error_code;
                    console.log($scope.errormsg);
                    $scope.dataloading = false;
                    $scope.newclass = false;
                }
            },
                function(response){
                    $scope.dataloading = false;
                    $scope.newclass = false;

            });
        }
    };
}]);

在登陆的地方我用了ngMessage,当表单验证错误的时候从json文件里面显示对应的错误信息。
现在需要在http请求500的时候,也显示从服务器收到对应的错误信息,已经将错误信息的key找到并且赋值给了$scope.errormsg。
现在的问题是如何使ngMessage那个p在500错误的时候显示出来

update

如果我不用ngMessage,只用ng-if的话可以显示表单验证信息和http错误信息,但是这样一来表单验证错误信息就不能动态显示了

PHP中文网PHP中文网2819 days ago252

reply all(2)I'll reply

  • 大家讲道理

    大家讲道理2017-04-10 16:57:16

    因为表单验证成功之后才会发送请求,所以表单验证肯定不会影响http验证,那你可以把表单验证信息和http错误信息分开,不要混在一个容器中,加一个显示http错误信息的容器,判断当发生http错误时显示$scope.errormsg

    reply
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 16:57:16

    只用ng-if的话应该也没有问题吧,就是看起来比较混论罢了,得写成多个容器。

    不过ngMessage是可以自定义validation和error的吧,需要写一个directive,在里面进行复杂的http check。

    reply
    0
  • Cancelreply