1
resposta

Iteração com ng-repeat quando um objeto tem como parâmetro outro objeto

Achei ótimo esse recurso do ng-repeat do Angular, só me veio uma dúvida agora:

Como eu iteraria pra jogar pra minha view, através de expressões angulares, um JSON que passasse como também um objeto, o valor de alguma de suas chaves? Por exemplo:

var grupos = 
[
    {
        _id: 1,
        integrantes: 
        [
            {
                'nome': 'Renan',
                'e-mail': 'renan@exemplo.com'
            },
            {
                'nome': 'Edgar',
                'e-mail': 'edgar@exemplo.com'
            }
        ],
    },

    {
        _id: 2,
        integrantes:
        [
            {
                'nome': 'Arthur',
                'e-mail': 'arthur@exemplo.com'
            },
            {
                'nome': 'José',
                'e-mail': 'jose@exemplo.com'
            }
        ]
    },

    {
        _id: 3,
        integrantes:
        [
            {
                'nome': 'Max',
                'e-mail': 'max@exemplo.com'
            }
        ]
    },
];

E se eu quisesse alimentar minha view com esse JSON em uma tabela, por exemplo, como eu garantiria que minha angular expression teria acesso ao atributo grupos.integrantes.nome, por exemplo?

Andei pensando um pouco aqui, e até agora tenho:

grupos-controller.js:

angular.module('meuapp').controller('GruposController', function($scope, $http){

    $scope.grupos = [];

    $http.get('data/grupos')
    .success(function(grupos,){
        $scope.grupos = grupos;
    })
    .error(function(error){
        console.log('erro na requisição ajax de grupos');
    });    

});

e em minha view:

...
<div ng-controller="GruposController">
    <h1>GRUPOS</h1>
    <div ng-repeat="grupo in grupos">
        <h2>Grupo {{grupo._id}}</h2>
            <p></p>
    </div>

</div>

Até aí eu consigo exibir os três grupos com suas IDs que criei em /data/grupos normalmente na minha view. Fica assim:

GRUPOS

Grupo 1

Grupo 2

Grupo 3

Mas como fazer para que consiga também exibir cada integrante dos grupos, com seus respectivos Nomes e E-mails, por exemplo? Algo assim:

GRUPOS

Grupo 1

Renan, renan@exemplo.com

Edgar, edgar@exemplo.com

Grupo 2

Arthur, arthur@exemplo.com

José, jose@exemplo.com

Grupo 3

Max, max@exemplo.com

1 resposta

Fala renan, tudo bom? Acredito que no seu caso seria um ng-repeat dentro do outro, acessando o a chave integrantes assim: grupo.integrantes