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

Dúvida sobre ng-repeat

Galera, tenho um ng-repeat dentro de outro ng-repeat.

ng-repeat="escola in lista"
    <p>escola.nome</p>
    ng-repeat=" aluno in escola.alunos"
        <p>aluno.nome</p>
        <p>aluno.idade</p>

Já está filtrando os alunos dentro do segundo ng-repeat. Criei uma função que verifica se naquela repetição existe o nome do aluno selecionado. Até aí tudo bem.

O problema é que, caso não exista alunos, eu não quero exibir o nome da escola. Estou quebrando a cabeça há dias e não consigo sair do lugar.

Agradeço qualquer ajuda.

3 respostas
solução!

Dentro da tag <p> que tem o nome da escola, use a diretiva ng-show, do angular, utilizando o tamanho do array alunos como valor.

ng-repeat="escola in lista"
    <p ng-show="escola.alunos.length">escola.nome</p>
    ng-repeat=" aluno in escola.alunos"
        <p>aluno.nome</p>
        <p>aluno.idade</p>

O valor 0 será considerado falso, e qualquer outro valor será considerado verdadeiro, assim, o parágrafo só será exibido quando houver elementos no array.

Opa Winstein, obrigado pela resposta. Realmente essa alternativa resolve o problema neste caso. No meu caso real era um pouco mais complicado.

Tanto no exemplo quanto na minha solução real, eu utilizaria ng-if para não adicionar os elementos a serem filtrados ao DOM. Mas resolveu. Obrigado.

De nada Pedro.

Agora que você falou que não quer adicionar os elementos ao DOM, não seria melhor validar na controller e só adicionar ao DOM se a lista não estiver vazia?