Function AngularJS is not respecting the condition!

1

I have this function, which gets two parameters, however, when I pass the different name, it falls into 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();
                     });
            }
    }
    
asked by anonymous 07.05.2018 / 15:26

1 answer

1

It has a coding error where the comparison variable was only doing the comparison in the first and the rest not, to work it has to compare with all of the following:

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')

If you can still improve this 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 ()

    
07.05.2018 / 15:32