Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Length do scope do angular não é exibido quando a lista possui apenas um objeto

Boa tarde. tudo bem?

Tenho um sistema em que quando tem mais de um objeto, aparece normalmente a lista, o length retorna a quantidade correta, porém quando tem apenas um objeto na lista, não aparece nada em length e não retorna o que deveria retornar. Segue o código :

<div>{{clientes.cliente.length}}</div>
<table ng-show="clientes.cliente.length > 0 " class="table table-striped">    
    <tr>  
      <th></th>
      <th><a href="" ng-click="ordernarPor('id')"> &nbsp; &nbsp;Id</a></th>
      <th><a href="" ng-click="ordernarPor('nomeCliente')"> &nbsp; &nbsp; &nbsp;Cliente</a></th>      
      <th></th>
      <th></th>
    </tr>
     <tr ng-class="{'selecionado negrito': cliente.selecionado}" ng-repeat="cliente in clientes.cliente  | filter:criterioDeBusca | orderBy:criterioDeOrdenacao:direcaoDaOrdenacao" >      
      <td>{{cliente.id}}</td>

Será que é uma limitação do angular e por isso foi criado o angular 2 ou é algum erro que ainda não desvendei? Obrigado.

5 respostas
solução!

Boa tarde.

Se a sua API retorna um array, não vejo motivo do .length não funcionar. Porém, se a sua API, por algum motivo, esta retornando um objeto cliente no lugar de um array que contenha um cliente, você terá problemas.

Tem que rever a sua API e verificar o que é retornando quando um cliente apenas é retornado.

Professor, boa noite! Minha aplicação em Angular espera receber um array.

Minha aplicação Java pode enviar um array com um ou mais elementos.

No caso do array java possuir apenas um elemento, o json é convertido para um elemento sem array.

Como minha aplicação web espera receber um array, e acaba recebendo um objeto diferente, ela apresenta problemas.

O senhor teria alguma sugestão para resolver estes problema de forma elegante? Estou fazendo umas comparações entre o Gsom e o JAXB, e aparentente o GSON É O QUE aprenta estabilide (O JAVA ENVIA SINGLE ITEM NUM ARRAY) SOMENTE PARA NÃO GERAR PROBLEMAS NO ANGULAR.

Solicito por gentileza informar o que poderá ser feito ára que esta aplicacao esteja funcional.

grato!

ODANTE SWERTS

Não tem jeito, o melhor caminho é alinhar sua API para devolver sempre um array. Se o contrato da sua API é devolver uma lista então não há como fugir disso sem gerar inconsistência.

Veja que não é uma questão do Angular e sim de backend.

Obrigado pela dica professor! Passei a utilizar o Gson, e padronizei a saída do java para ArrayList, mesmo nos casos que é devolvido apenas um item. Desta forma, funcionou muito bem!

Grato!

Agora sim, sua API agora está supimpa!