2017-11-29 3 views
0

Ich habe einen Controller namens PortfolioService. Ich habe es mit der Funktion .service (im Gegensatz zu .factory) erstellt, und es enthält eine Methode this.findPos. Eine interne Hilfsmethode innerhalb des gleichen Service muss this.findPos innerhalb eines forEach nennen:Wie kann ich eine Angular-Funktion innerhalb des gleichen Dienstes aufrufen, wenn sie innerhalb eines ForEach liegt?

var _getPositions = function() { 
    var filtered = _filterBeforeDate(); 
    filtered.forEach(function(trade){ 
    var position = this.findPos(trade.symbol); 
    [etc...] 
    }); 
}; 

Dies funktioniert nicht. this innerhalb einer forEach verweist nicht PortfolioService wie ich es will, und auch wenn ich console.log(this) außerhalb der forEach Block versuchen, gibt es nur die window zurück. Wenn ich stattdessen versuche, PortfolioService.findPos() aufzurufen, protokolliert es einen Fehler PortfolioService is not defined. Wenn ich versuche, PortfolioService in sich selbst zu injizieren (nicht die beste Idee, bin ich mir sicher), gibt es einen $injector.cdep Fehler.

Ich kann nicht this.findPos auf ein internes Hilfsmethode ändern (var statt this verwendet wird), weil ich PortfolioService.findPos() in einem Controller zugreifen müssen. Was ist der beste Weg, damit umzugehen?

Antwort

0

Beantwortung meiner Frage, aber ich würde mich freuen, Alternativen zu hören, die überlegen sein können:

Ich habe eine interne Hilfsmethode var _findPos die _getPositions innerhalb this.findPos und auch in var genannt wird. Ich bin mir nicht sicher, ob das die eleganteste Lösung ist, aber es funktioniert!

Verwandte Themen