[RESOLVIDO]Chamar métodos dentro de um Service no Angular JS

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.:slight_smile:

Obrigado pela resposta Alltairr.

Muito Obrigado :slight_smile:

De nada, é sempre bom ajudar…:v:

Tamo junto Tiago!!:v: