Boa noite, eu tenho este método aqui dentro de um service em angular:
this.rotacionar = function (rotacao) {
// ... informação descenessária abstraida
this.aviaoLista.forEach(function (aviao) {
if (aviao.alvo == true) {
// ... informação descenessária abstraida
**this.cartesianaParaPolar(aviao);**
}
});
};
Nesse método em negrito não está sendo chamado, fiz uma observação de que o método this.cartesianaParaPolar() só é chamado fora do foreach, variável aviaoLista. Porque não posso chamar meu método dentro de um foreach?
Dicas de solução são bem vindas, obrigado.
O correto no angular quando você deseja criar atributos locais no controller ou no service é criar uma variavel que receba isso… por exemplo: var self = this;
Depois você chama o método dessa maneira
self.aviaoLista.forEach(function(aviao){
self.cartesianaParaPolar(aviao);
});
1 curtida
@Tiago_Aleff_da_Silva o @rodrigo1208 está correto. Você está com problema de scope.
Dentro do forEach o scope this é outro.
1 curtida
Muito Obrigado pela resposta Rodrigo, eu não tinha me fraguado do escope do this do meu service não seria o mesmo dentro do foreach, o que eu fiz foi o seguinte: antes de eu chamar o foreach com o this.aviaoLista.foreach(…) eu guardei a referencia do escopo do service como você indicou, var self = this. Desse modo, pude chamar meu método dentro do foreach e não da mais erro, mas mantive a chamada da minha variável this.aviaoLista com o this, porque ela é usada em outros métodos também.
Muito Obrigado.
Obrigado pela resposta Alltairr.
Muito Obrigado 
De nada, é sempre bom ajudar…