0
The situation is as follows from the controller equipecontrol
, I’m walking a forEach
, inside a then()
, which has previously achieved a result by performing the function getEscalacao()
, that is defined in service EquipeService
, as stated in the code below.
example.controller('equipecontrol', ['EquipeService','PessoasService','$scope','$q', function(EquipeService,PessoasService,$scope,$q) {
Parse.initialize('APPLICATION_ID', 'JAVASCRIPT_KEY');
Parse.serverURL = 'https://parseapi.back4app.com';
EquipeService.getEscalacao().then(function (escalacao) {
var idjogador = '';
angular.forEach(escalacao, function (atuacao) {
idjogador = atuacao.attributes['jogador'].id; //id do jogador
gtStorageJogador = PessoasService.getPessoasStorage(idjogador); //<-- aqui invoco a função do outro service
console.log(gtStorageJogador) //<-- este console não apresentada nada
})
})
}]);
Note in the code above that I get the idjogador
in the current iteration, class Escalacao
, and I try to research it in class PeopleObject
by invoking the function getPessoasStorage()
which is defined in another service
by name PessoasService
, note also that step idjogador
as parameter. Follows the code of service PessoasService
:
example.service('PessoasService', [function () {
var jogadorDadosStorage = {};
return {
getPessoasStorage: function (params) {
var PeopleObject = Parse.Object.extend("PeopleObject");
var PeopleQuery = new Parse.Query(PeopleObject);
//console.log(params)
if(params !== undefined) {
PeopleQuery.equalTo('objectId',params);
}
PeopleQuery.find({
success: function(pessoas) {
for (var i = pessoas.length - 1; i >= 0; i--) {
objpessoas = pessoas[i];
idpessoa = objpessoas.id
nomepessoa = objpessoas.get('username');
posorigem = objpessoas.attributes.posicaooriginal.id;
emailpes = objpessoas.get('email');
senhapes = objpessoas.get('senha');
dtalter = objpessoas.get('updatedAt');
dtcreate = objpessoas.get('createdAt');
jogadorDadosStorage = {
'id' : idpessoa,
'nome' : nomepessoa,
'posorig' : posorigem,
'email' : emailpes,
'senha' : senhapes,
'dtalt' : dtalter,
'dtcria' : dtcreate
}
}
}, error: function(error) {
console.log("Error da Query PeopleObject: " + error.code + " " + error.message)
var objSrv = {};
}
})
return jogadorDadosStorage;
}
}
}]);
I still don’t know why this logic isn’t working. I put a console.log(gtStorageJogador)
but it does not present results, it is as if the function getPessoasStorage
was not being executed at this time, I think it may be a problem associated with the issue of asynchrony.
In this section of the program, that is, when going through the forEach
for each class item Escalacao
, I need a function that can bring me from class PeopleObject
the name corresponding to idjogador
positioned at this time in the class Escalacao
, because my intention at the end of all this is to fill an object containing data from various classes, to be able to display in a view.
Can someone help me?
Hello Celsomtrindade, good evening! Thank you for your attention! after implementing this. the system presented the following: "Uncaught Syntaxerror: Unexpected token . "
– Ita
I realized now the following, the getPeopleStorage function is being executed, but only after the completion of the "angular.foreach(escalation, Function(acting)". How can I fix this? , i.e., make getPeopleStorage run while I’m going through each item of the escalation ?
– Ita