Angularjs 回调错误的作用域

Angularjs 回调错误的作用域,angularjs,typescript,angular-google-maps,Angularjs,Typescript,Angular Google Maps,我有个问题,不记得该怎么解决。我订阅了来自第三方指令的回调,但没有使用正确的范围被回调。我的意思是,当它击中我的控制器时,这个实际上是另一个范围,我不能完全弄清楚,所以它不能访问任何成员变量。我如何回到我的控制器范围 <ui-gmap-layer type="HeatmapLayer" onCreated="$ctrl.heatLayerCallback"></ui-gmap-layer> 如果我把电话改回 <ui-gmap-layer onCreated="$c

我有个问题,不记得该怎么解决。我订阅了来自第三方指令的回调,但没有使用正确的范围被回调。我的意思是,当它击中我的控制器时,
这个
实际上是另一个范围,我不能完全弄清楚,所以它不能访问任何成员变量。我如何回到我的控制器范围

<ui-gmap-layer type="HeatmapLayer" onCreated="$ctrl.heatLayerCallback"></ui-gmap-layer>
如果我把电话改回

<ui-gmap-layer onCreated="$ctrl.heatLayerCallback(layer)"></ui-gmap-layer>

然后,我的回调在正确的作用域(即我的控制器)上执行,但参数
丢失/

注释

我使用的是Typescript、Angular 1.6和Angular Components,您可以使用它们将回调绑定到所需的上下文(您的控制器),或者在回调之前将其存储在另一个新变量中,并通过回调中的该变量访问它

比如:

var heatLayerCallback = (function(heatLayer: google.maps.visualization.HeatmapLayer) {
    this.heatMapLayer = heatLayer;
    // 'this' here is now the same as the 'this' outside/below
}).bind(this); // bind to this or whatever context you want
…或:

var that = this; // store this or whatever context you want
...
heatLayerCallback(heatLayer: google.maps.visualization.HeatmapLayer) {
    that.heatMapLayer = heatLayer;

精确的语法可能因引用的代码所在的位置而异(例如,找到您想要的“this”的位置,或者使用任何上下文而不是“this”)。

谢谢,您知道如何在typescript中使用它吗?我认为默认情况下,typescript将执行
var that=this
,因为typescript是JavaScript的超集,任何一种方法都应该有效。同样,根据代码的其余部分,我的示例中的原始
this
可能不是正确的上下文。使用(绑定或存储)您的情况所需的任何上下文。我还将更新绑定示例,并进行更多解释。谢谢Will,但它仍然不起作用,我将用我的TriedTool更新我的问题,这可能有助于查看更多的代码,最重要的是在控制器中声明函数的位置。我重新阅读了代码,意识到我犯了一个错误,您的答案[顶部]很好,谢谢!
var that = this; // store this or whatever context you want
...
heatLayerCallback(heatLayer: google.maps.visualization.HeatmapLayer) {
    that.heatMapLayer = heatLayer;