Problems with insertion into an array

1

vm.categorias = function () {
  ConectaVagas('get', 'categorias').then(function (val) {
      vm.categorias = val;
      for (var a = 0; a < vm.categorias.length; a++) {
          console.log(a); // Aqui retorna 0,1,2,3 ( Número de categorias )
          ConectaVagas('get', 'subcategoria', vm.categorias[a].id_categoria).then(function (val) { // Lista das subcategorias relacionadas a categoria acima
              vm.subAplicar = val;
              console.log(a); // Aqui retorna o número 4 porém queria que retornasse ou o 0 ou 1 ou 2 ou 3 como está acima assim me deixando eu fazer a inserção na array 
              vm.categoria[a].arrayNova = vm.subAplicar;
          });
      }
  });
}

I would need to insert into the object vm.category [a] an array (arrayNova) with all subcategories, however I am not following :(

    
asked by anonymous 03.07.2017 / 09:12

1 answer

3

The problem is that ConectaVagas is asynchronous and so for is gone and left a with 4 value. You need to save a reference of a to each time you call ConectaVagas . You can do it like this:

vm.categorias = function() {
  ConectaVagas('get', 'categorias').then(function(val) {
    vm.categorias = val;
    for (var a = 0; a < vm.categorias.length; a++) {
      console.log(a); // Aqui retorna 0,1,2,3 ( Número de categorias )

      (function(i) { // aqui o "a" vira "i" e fica guardado para cada iteração do loop

        ConectaVagas('get', 'subcategoria', vm.categorias[i].id_categoria).then(function(val) { // Lista das subcategorias relacionadas a categoria acima
          vm.subAplicar = val;
          console.log(i); // Aqui retorna o número 4 porém queria que retornasse ou o 0 ou 1 ou 2 ou 3 como está acima assim me deixando eu fazer a inserção na array 
          vm.categoria[i].arrayNova = vm.subAplicar;
        });
      })(a);

    }
  });
}
    
03.07.2017 / 11:48