Add object within an object

1

is as follows, I have 3 tables. Cities, Bodies and Reasons. 1 City can have several bodies, and 1 orgão several reasons.

My problem is that in a single page you have to appear all the organs of the city and within the organ all reasons of the organ. I can not put the reasons inside the organ, a matter of logic.

I'm doing an ng-repeat of the bodies that are referenced to the city

$http.get(base_url + 'controlx/functions/getWhere/orgaos/cidades_id/'
       + $stateParams.cidadeId) // Aqui pega os orgãos referenciado a cidade
.success(function(data) {
  $scope.orgaos = data;
  var i = 0;
  var motivo = [];
  for (let orgao of $scope.orgaos){
    $http.get(base_url + 'controlx/functions/getWhere/motivos/orgaos_id/'+orgao.id) // aqui faz uma repetição referenciado ao orgão.
    .success(function(data) {
      motivo.push(data);
      $scope.orgaos=motivo[i];
      i++;
    });
  }
  console.log(motivo);
  if (data.length === 0) {
    $scope.erro = 'Nenhum Orgão Encontrado';
  }
});

So, I was trying to add the reasons within each body. But that's not working. I basically wanted to put the reasons inside each respective org ($ scope.orgaos). Like giving a .push, but it does not work on objects.

To understand how I want to:

    
asked by anonymous 08.02.2017 / 13:32

2 answers

2

Well, as you have not posted the data schema , I'll assume you get an Array of Objects in both requests. Then you can do the following:

$http.get(base_url + 'controlx/functions/getWhere/orgaos/cidades_id/' + $stateParams.cidadeId) // Aqui pega os orgãos referenciado a cidade
.success(function(data) {

    /* 
        Supondo que aqui você recebe um Array de Objetos.
        Seria algo assim: 
            [
                { id: 'id_orgao_1' },
                { id: 'id_orgao_2' },
                { id: 'id_orgao_3' }
            ]
    */
    $scope.orgaos = data;

    for (let orgao of $scope.orgaos){
        $http.get(base_url + 'controlx/functions/getWhere/motivos/orgaos_id/'+orgao.id) // aqui faz uma repetição referenciado ao orgão.
        .success(function(data) {

            /* 
                Supondo que aqui você recebe um Array.
                Aqui você cria uma nova chave dentro de cada objeto contendo este Array
            */
            orgao.motivos = data

        });
    }

    console.log($scope.orgaos);
    /*

     Sua estrutura final:

            [
              {
                "id": "id_orgao_1",
                "motivos": [ 
                  "motivo1 do orgao1",
                  "motivo2 do orgao1",
                  "motivo3 do orgao1"
                ]
              },
              {
                "id": "id_orgao_2",
                "motivos": [
                  "motivo1 do orgao2",
                  "motivo2 do orgao2",
                  "motivo3 do orgao2"
                ]
              },
              {
                "id": "id_orgao_3",
                "motivos": [
                  "motivo1 do orgao3",
                  "motivo2 do orgao3",
                  "motivo3 do orgao3"
                ]
              }
            ]
    */


    if (data.length === 0) {
        $scope.erro = 'Nenhum Orgão Encontrado';
    }
});
    
08.02.2017 / 14:31
0

Friend. It would be interesting to do a basic javascript even and make logic work with objects, then we could contribute easier with problem solving and replicate locally

I followed the basic script that I did, if you can adjust it according to your needs, we can evaluate the problem:)

    

  var orgaos = { "cidade" : ["SP", "RJ"] }

  var i = 0;
  var motivo = [];
  for (let orgao of orgaos.cidade){

      motivo.push('teste');
      orgaos=motivo[i];
      i++;

  }
  console.log(motivo);

</script>

    
08.02.2017 / 14:19