間違ったスコープでのコールバック

クリス

問題があり、回避方法を思い出せません。サードパーティのディレクティブからのコールバックをサブスクライブしていますが、正しいスコープでコールバックされていません。つまり、コントローラーにヒットしたとき、this実際には他のスコープであるため、メンバー変数にアクセスできないため、まったく理解できません。コントローラスコープに戻るにはどうすればよいですか?

<ui-gmap-layer type="HeatmapLayer" onCreated="$ctrl.heatLayerCallback"></ui-gmap-layer>

コンポーネントコントローラー:

heatLayerCallback(heatLayer: google.maps.visualization.HeatmapLayer) {
    this.heatMapLayer = heatLayer;
    // 'this' here is not my controller
}

コールバックをに変更した場合

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

次に、私のコールバックは正しいスコープ(つまり私のコントローラー)で実行されますが、パラメーターlayerは失われます; /

ノート

Typescript、Angular 1.6、AngularComponentsを使用しています

意志

bind使用して、コールバックを目的のコンテキスト(コントローラー)にバインドするか、コールバックの前に別の新しい変数に格納して、コールバック内のその変数からアクセスすることができます。

何かのようなもの:

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」の代わりに任意のコンテキストを使用します)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ContentHandlerが間違った順序でコールバックを行う

分類Dev

コールバック関数が間違った順序で終了する

分類Dev

間違ったコールバック変数内のd3.json応答

分類Dev

基本的なgitプロセス-間違った方向にコーディングしたので、バックアップしたい

分類Dev

Google Charts:スクロールコンテナ内でツールチップの位置が間違っている

分類Dev

セッションスコープのBeanが間違ったApplicationContextでリークする

分類Dev

Jqueryグローバル変数スコープ/間違った値

分類Dev

スクロールの間違った入力オートコンプリート位置(クロム)

分類Dev

MASMがプロテクトモードで間違ったコールターゲットを生成する

分類Dev

DCEVMを使用してコードをホットスワップした後の定数プールでの間違ったタイプ

分類Dev

CUDAコンパイル中にCLionのターゲットオフロードプロセスで使用された間違ったコンパイラ

分類Dev

反応コンポーネントの間違ったパスプロップ

分類Dev

デスクトップ上の間違ったアイコン

分類Dev

次のコードが間違った型にオートボックス化してコンパイルされるのはなぜですか?

分類Dev

ネストされたインクルードがパグのドロップブロックコンテンツの間違った場所にある

分類Dev

Firefoxの下のスクロールバーで間違った画像サイズ

分類Dev

forループの配列のインデックス付け[間違った出力] [バッチ]

分類Dev

ミューテックスを使用したThreadfuncのコンソール出力が間違っている

分類Dev

Cで間違った量のパラメーターを使用してコールバックを宣言するとどうなりますか?

分類Dev

forループの非同期呼び出しにより、コールバックで変数が間違っている

分類Dev

Raspberry Pi 2のクロスコンパイルとリモート展開のためのQt Creatorの適切なセットアップ-間違ったアーキテクチャ用のバイナリの生成

分類Dev

代入演算子、マップと約束。そのコードで間違っては何ですか?ジャバスクリプト

分類Dev

材料角度ステッパーの間違ったアイコン

分類Dev

「FizzBuzz」スタイルコードへの間違った答え

分類Dev

io_add_watch()コールバックが間違ったIOChannelオブジェクトを受け取るのはなぜですか?

分類Dev

フォームのスクロールバーがスプレッドシートの間違った行にスクロールする

分類Dev

バックボーンコレクションが間違ったモデルになりました

分類Dev

tinymceからのコールバックで「this」を失った

分類Dev

Androidアプリケーション:サーバーコンテンツの間違った文字セット

Related 関連記事

  1. 1

    ContentHandlerが間違った順序でコールバックを行う

  2. 2

    コールバック関数が間違った順序で終了する

  3. 3

    間違ったコールバック変数内のd3.json応答

  4. 4

    基本的なgitプロセス-間違った方向にコーディングしたので、バックアップしたい

  5. 5

    Google Charts:スクロールコンテナ内でツールチップの位置が間違っている

  6. 6

    セッションスコープのBeanが間違ったApplicationContextでリークする

  7. 7

    Jqueryグローバル変数スコープ/間違った値

  8. 8

    スクロールの間違った入力オートコンプリート位置(クロム)

  9. 9

    MASMがプロテクトモードで間違ったコールターゲットを生成する

  10. 10

    DCEVMを使用してコードをホットスワップした後の定数プールでの間違ったタイプ

  11. 11

    CUDAコンパイル中にCLionのターゲットオフロードプロセスで使用された間違ったコンパイラ

  12. 12

    反応コンポーネントの間違ったパスプロップ

  13. 13

    デスクトップ上の間違ったアイコン

  14. 14

    次のコードが間違った型にオートボックス化してコンパイルされるのはなぜですか?

  15. 15

    ネストされたインクルードがパグのドロップブロックコンテンツの間違った場所にある

  16. 16

    Firefoxの下のスクロールバーで間違った画像サイズ

  17. 17

    forループの配列のインデックス付け[間違った出力] [バッチ]

  18. 18

    ミューテックスを使用したThreadfuncのコンソール出力が間違っている

  19. 19

    Cで間違った量のパラメーターを使用してコールバックを宣言するとどうなりますか?

  20. 20

    forループの非同期呼び出しにより、コールバックで変数が間違っている

  21. 21

    Raspberry Pi 2のクロスコンパイルとリモート展開のためのQt Creatorの適切なセットアップ-間違ったアーキテクチャ用のバイナリの生成

  22. 22

    代入演算子、マップと約束。そのコードで間違っては何ですか?ジャバスクリプト

  23. 23

    材料角度ステッパーの間違ったアイコン

  24. 24

    「FizzBuzz」スタイルコードへの間違った答え

  25. 25

    io_add_watch()コールバックが間違ったIOChannelオブジェクトを受け取るのはなぜですか?

  26. 26

    フォームのスクロールバーがスプレッドシートの間違った行にスクロールする

  27. 27

    バックボーンコレクションが間違ったモデルになりました

  28. 28

    tinymceからのコールバックで「this」を失った

  29. 29

    Androidアプリケーション:サーバーコンテンツの間違った文字セット

ホットタグ

アーカイブ