Eu tenho um serviço que faz uma chamada REST. Quando a chamada de repouso estiver concluída (isto é, os dados estiverem disponíveis), desejo chamar a função do serviço que processa esses dados.
.service("EventService", function(eventRestApi, $scope) {
var internalData = { messages : [], headers: [], consolidatedEvents : {} }
return {
loadEvents : function(beginTimeMillis, endTimeMillis) {
this.getEvents(beginTimeMillis, endTimeMillis, internalData, null)
.then(function(result){
internalData.consolidatedEvents = this.consolidateEvents(internalData.events)
})
},
getEvents : function() {...},
consolidatedEvents : function() {...},
}
Eu recebo um erro dizendo que this
não tem consolidateEvents
. Como faço para acessar uma função no meu serviço em um retorno de chamada? Estou me aproximando desse problema errado?
Respostas:
2 para resposta № 1Em um retorno de chamada, "isto" se torna seu retorno de chamada, portanto, para acessá-lo, você pode vincular o escopo pai em uma variável.
Eu recomendo que:
.service("MyService", function () {
var that = this;
return {
myCallback : function () {
that.myMethod();
}
}
});