Angularjs function is not respecting the condition!

Asked

Viewed 34 times

1

I have this function, which takes two parameters, however, when I pass the different name, it falls into the if in the same way.

$scope.deleteCategory = function(id, nome)
{

            if(nome == 'Despesas Administrativas' || 'Despesas com Empregados' || 'Despesas Financeiras' || 'Despesas Tributárias' || 'Despesas com Diretoria' || 'Receitas de Serviços' || 'Despesas com Encargos Sociais' || 'Receitas Financeiras')
            {

                        swal("Ops, Não foi possível deletar a categoria "+ nome, "Vocẽ não pode deletar uma categoria padrão!");

                        loadData();   
            }


            else
            {
                $scope.questionMsg('Todas as contas com essa categoria SERÃO EXCLUÍDAS também!')
                    .then(function()
                     {
                        CategoriaService.delete(id, {
                            success: function(response){
                                console.log(response);
                                swal("Salvo!", "Categoria excluida com sucesso", "success");
                                loadData();
                            },

                            error: function(response)
                            {
                                swal("Não foi possível exlcuir", "Tente novamente mais tarde", "error");
                            }
                        });
                        loadData();
                     });
            }
    }

1 answer

1

There is an encoding error where the comparison variable was only making the comparison in the first and the rest not, to work you have to compare with all of the following way:

if (nome == 'Despesas Administrativas' || 
   nome == 'Despesas com Empregados' || 
   nome == 'Despesas Financeiras' || 
   nome == 'Despesas Tributárias' || 
   nome == 'Despesas com Diretoria' || 
   nome == 'Receitas de Serviços' || 
   nome == 'Despesas com Encargos Sociais' || 
   nome == 'Receitas Financeiras')

whether it can improve that code as follows:

function inArray(needle, haystack) {
    var length = haystack.length;
    for(var i = 0; i < length; i++) {
        if(haystack[i] == needle) return true;
    }
    return false;
}

$haystack = new Array('Despesas Administrativas',
'Despesas com Empregados','Despesas Financeiras',
'Despesas Tributárias', 'Despesas com Diretoria',
'Receitas de Serviços','Despesas com Encargos Sociais',
'Receitas Financeiras');


console.log(inArray('', $haystack)); // false
console.log(inArray('Receitas Financeiras', $haystack)); // true

Reference: Javascript equivalent of PHP’s in_array()

  • It worked perfectly, thank you very much!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.