私は問題があり、回避方法を覚えていません。私は第三者指令からコールバックを購読していますが、正しいスコープでコールバックされていません。そしてそれは私がコントローラに当たったときに、実際には他のスコープであることを意味しています。メンバー変数にアクセスすることはできません。私のコントローラのスコープに戻るにはどうしたらいいですか?間違った範囲のコールバック
<ui-gmap-layer type="HeatmapLayer" onCreated="$ctrl.heatLayerCallback"></ui-gmap-layer>
コンポーネントコントローラ:私は戻って
<ui-gmap-layer onCreated="$ctrl.heatLayerCallback(layer)"></ui-gmap-layer>
への呼び出しを変更した場合はその後、私のコールバックは、右スコープ(つまり私のコントローラ)上で実行しますが、パラメータlayer
が失われた
heatLayerCallback(heatLayer: google.maps.visualization.HeatmapLayer) {
this.heatMapLayer = heatLayer;
// 'this' here is not my controller
}
;/
注
私はあなたが欲しいコンテキスト(あなたのコントローラ)にコールバックを結合するか、または単にコールバックの前に別の新しい変数に格納し、ことによってそれにアクセスするためにbindを使用することができ活字体、角度1.6および角度成分
ありがとうございます。これをタイスクリプトでどのように動作させるか考えてください。私はデフォルトではtypescriptは 'var that = this'を実行すると思います。 – Chris
TypeScriptはJavaScriptのスーパーセットなので、どちらの方法でも動作するはずです。もう一度、コードの残りの部分がどのように見えるかによっては、私の例で元の 'this'は正しい文脈ではないかもしれません。あなたの状況に必要なあらゆる文脈を使用(バインドまたはストア)してください。また、バインドの例をもう少し説明して更新します。 – Will
ありがとうございますが、まだ動作していません。私の質問をiveで試してみました。 – Chris