我有一个名为PortfolioService
的控制器。我使用.service
函数(而不是.factory
)创建了它,它包含方法this.findPos
。同一服务中的内部帮助方法需要在this.findPos
中调用forEach
:
var _getPositions = function() {
var filtered = _filterBeforeDate();
filtered.forEach(function(trade){
var position = this.findPos(trade.symbol);
[etc...]
});
};
这不起作用。 this
中的forEach
并未像我希望的那样引用PortfolioService
,即使我在console.log(this)
块之外尝试forEach
,它也只会返回window
。如果我尝试拨打PortfolioService.findPos()
,则会记录PortfolioService is not defined
的错误。如果我尝试将PortfolioService
注入其中(不是最好的主意,我确定),则会出现$injector.cdep
错误。
我无法将this.findPos
更改为内部帮助方法(使用var
而不是this
),因为我需要在控制器中访问PortfolioService.findPos()
。处理这个问题的最佳方法是什么?
答案 0 :(得分:0)
回答我自己的问题,但我很高兴听到可能更优秀的替代方案:
我创建了一个内部帮助方法var _findPos
,该方法在this.findPos
和var _getPositions
中调用。我不确定这是否是最优雅的解决方案,但它确实有效!