2017-11-29 4 views
0

私はPortfolioServiceというコントローラを持っています。 とは対照的に、.service関数を使用して作成しました。メソッドはthis.findPosです。forEach内にある場合、同じサービス内からAngular関数を呼び出すにはどうすればよいですか?

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

これは動作しません:同じサービス内の内部ヘルパーメソッドはforEachthis.findPosを呼び出す必要があります。 this内のforEachは、PortfolioServiceを参照していません。forEachブロックの外側のconsole.log(this)にしようとしても、windowを返します。代わりにPortfolioService.findPos()に電話すると、PortfolioService is not definedというエラーが記録されます。私がPortfolioServiceを自分自身に注入しようとすると(それはベストアイデアではないと確信しています)、それは$injector.cdepというエラーを出します。

IはコントローラにPortfolioService.findPos()にアクセスする必要があるので、私は(var代わりにthisを使用して)内部ヘルパーメソッドにthis.findPosを変更することはできません。これを処理する最善の方法は何ですか?

答えて

0

自分の質問に答えるが、私は優れていることも選択肢を聞いて喜んでいると思います:

私はthis.findPos内で呼び出される内部ヘルパーメソッドvar _findPosを作成しても、VAR _getPositionsに。これが最も洗練されたソリューションであるかどうかはわかりませんが、機能します!