如果在forEach中,如何从同一服务中调用Angular函数?

时间:2017-11-29 01:38:25

标签: angularjs foreach

我有一个名为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()。处理这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

回答我自己的问题,但我很高兴听到可能更优秀的替代方案:

我创建了一个内部帮助方法var _findPos,该方法在this.findPos和var _getPositions中调用。我不确定这是否是最优雅的解决方案,但它确实有效!