Problems with insertion into an array

Asked

Viewed 37 times

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;
          });
      }
  });
}

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

1 answer

3


The problem is that ConectaVagas is asynchronous and so the for is over and left the a with the value 4. You have to keep a reference from a for every 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);

    }
  });
}
  • It worked out! Thank you very much!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.