Eternal loop button using AngularJS

0

I'm using a button in which you have a call ng-click = CustomerSearch. It triggers a function in the controlled Angle but stays in the eternal loop. How do I fix this?

HTML

 <div class="botao" align="right">
              <md-button ng-class="loading ? 'btnprimario  md-button loading' : 'btnprimario  md-button'" type="submit" ng-click="buscarCliente()" ng-disabled="!cpfValido" class="btngreen btnBuscarCli">Buscar Cliente</md-button>
    </div>

Controller.JS

vm.buscarCliente = function(){
      vm.loading = true;
      if (vm.cpf !== undefined && vm.cpf !=='') {
        return desbloqueioCartaoService.buscarCPF(vm.cpf).then(function(response){
          if(response.status===500){
              MensagemFactory.setMensagem('teste');
          }
          if(response.status === 200){
            MensagemFactory.setMensagem('sucesso','Sucesso.','CPF encontrado com sucesso! '+vm.cpf,false,vm);
            vm.loading = false;
            parent.cliente = {};
            parent.cliente.leituraCartao = {};
            parent.cliente.leituraCartao.cpf = vm.cpf;
            $location.path('/leituraDeCartao');
          }else{
            MensagemFactory.setMensagem('info','Informação.',+vm.cpf+' Desculpe, Não foi encontrado.',false,vm);
          }
        }).catch(function() {
          MensagemFactory.setMensagem('erro','Error.',+vm.cpf+' Não foi encontrado.',false,vm);
        });
      } };

Image

    
asked by anonymous 16.02.2017 / 15:40

2 answers

0

Problem Response

vm.buscarCliente = function(){
          vm.loading = true;
          if (vm.cpf !== undefined && vm.cpf !=='') {
            return desbloqueioCartaoService.buscarCPF(vm.cpf).then(function(response){
              if(response.status===500){
                  vm.loading = false;//finalizar o loop
                  MensagemFactory.setMensagem('teste');
              }
              if(response.status === 200){
                MensagemFactory.setMensagem('sucesso','Sucesso.','CPF encontrado com sucesso! '+vm.cpf,false,vm);
                vm.loading = false;//finalizar o loop
                parent.cliente = {};
                parent.cliente.leituraCartao = {};
                parent.cliente.leituraCartao.cpf = vm.cpf;
                $location.path('/leituraDeCartao');
              }else{
                MensagemFactory.setMensagem('info','Informação.',+vm.cpf+' Desculpe, Não foi encontrado.',false,vm);
              }
            }).catch(function() {
              vm.loading = false;//finalizar o loop
              MensagemFactory.setMensagem('erro','Error.',+vm.cpf+' Não foi encontrado.',false,vm);
            });
          } };
    
16.02.2017 / 18:48
1

Alex, just to end the loop, just one call:

 return desbloqueioCartaoService.buscarCPF(vm.cpf).then(function(response){
     vm.loading = false;
     //seu codigo
 },function(_error) {
     vm.loading = false;
 });

What I suggest is to create an http interceptor by passing your message as a parameter.

If you happen to get an error, be it 500 or another, it will not go into your function, unless you're dealing with it first.

Here's an example:

$httpProvider.interceptors.push(['$window', '$q', function($window, $q) {
    var sessionInjector = {
        responseError: function(rejection) {
            if (rejection.status == 500) {
                //seu codigo                      
            } 

            return $q.reject(rejection);
        }
    };
    return sessionInjector;
}]);

Reference: link $ http

    
17.02.2017 / 13:34