2016-10-28 6 views
1

Попытка отобразить сообщение об ошибке в представлении, когда вызов службы с контроллера приводит к 404, путь перенаправляется на просмотр страницы входа в систему, а ошибка сообщение устанавливается в $ scope для просмотра, когда происходит 404.необходимо отобразить сообщение об ошибке в представлении, сообщение об ошибке установлено в контроллере

ниже код контроллер, который установлен в сообщение об ошибке в $ 404 при объеме происходит

angular.module('app.controllers').controller('contactLoginCtrl',['$rootScope','$scope','AuthenticateService','$location',function($rootScope,$scope,AuthenticateService,$location){ 


$scope.authenticate = function(userModel){ 
    var userName = userModel.username; 
    var password = userModel.password; 
    console.log(userName+password); 
    var result = AuthenticateService.checkUser(userName,password); 

    result.then(function(response){ 
     console.log(response); 

    },function(error){ 

     if(error.status== '404'){ 

      // ***below is the erroMssg which has to show on the view, 
       after setting the message it being redirected to login view*** 

      $scope.errorMsg = "your request not been processed"; 
      $location.path('/'); 
     } 
    }) 

}; 

}]);

В представлении я помещаю выражение ErrorMsg как {{}} ErrorMsg

Это не работает может кто-нибудь пожалуйста, предложить мне любой тренировки? заранее спасибо

+0

показать HTML код – Sajeetharan

+0

{{ErrorMsg}} <форма имя = "contactLogin" нг-контроллер = "contactLoginCtrl">
\t \t \t \t \t \t
\t \t \t \t \t \t <метка для = "пароль"> Пароль:  <входной тип = "пароль" нг-модель = имя "userModel.password" = "пароль" > \t \t \t
\t \t \t
кнопка Вход \t \t \t \t \t \t \t \t \t \t \t – user1245524

ответ

1

Скорее всего, это проблема с циклом дайджеста. Вот простую рабочую копию вашего сценария с данными, полученными из службы. вы можете решить свою проблему, имея $ scope.digest(), как только errMsg будет установлен в обратном вызове ajax-ошибки.

var app = angular.module("sampleApp", []); 
 

 
app.controller("sampleController", ["$scope", "sampleService", 
 
    function($scope, sampleService) { 
 

 
    sampleService.sampleMethod(1).then(function() { 
 
     console.log("Success"); 
 
    }, function(error) { 
 
     if (error.status == '400') { 
 
     $scope.errMsg = "Unauthorized User. Please login to continue"; 
 
     } 
 
     $scope.$digest(); 
 
    }); 
 
    } 
 
]); 
 

 
app.service("sampleService", function() { 
 
    this.sampleMethod = function(value) { 
 
    var promise = new Promise(function(resolve, reject) { 
 
     setTimeout(function() { 
 
     value = value * 2; 
 
     reject({ 
 
      status: 400, 
 
      message: "UnAuthorized" 
 
     }); 
 
     }, 1000); 
 
    }); 
 
    return promise; 
 
    }; 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script> 
 
<div ng-app="sampleApp"> 
 
    <div ng-controller="sampleController"> 
 
    {{errMsg}} 
 
    </div> 
 
</div>

0

ошибка обратного вызова будет иметь отдельный scope.So

angular.module('app.controllers').controller('contactLoginCtrl',['$rootScope','$scope','AuthenticateService','$location',function($rootScope,$scope,AuthenticateService,$location){ 

$scope.errorMsg = ""; 
$scope.authenticate = function(userModel){ 
    var userName = userModel.username; 
    var password = userModel.password; 
    console.log(userName+password); 
    var result = AuthenticateService.checkUser(userName,password); 

    result.then(function(response){ 
     console.log(response); 

    },function(error){ 

     if(error.status== '404'){ 

      // ***below is the erroMssg which has to show on the view, 
       after setting the message it being redirected to login view*** 

      $scope.errorMsg = "your request not been processed"; 
      $location.path('/'); 
     } 
    }) 

}; 
Смежные вопросы