2016-06-15 4 views
0

私はAngular2を使用する基本的なIonic 2アプリを持っています。私はかなり基本的だが不満足な問題がある。ここに私のコンポーネントは、私のアプリは、コールバックの火災は、もはやthis.id範囲を見つけることができる場合、コールバックを受け入れないとメソッドに自分自身を添付してくださいしようとすると問題がある...Ionic2のコールバック内からローカルプロパティにアクセスできない

import {Component} from "@angular/core"; 

@Component({ 
    '<ion-content>{{id}}</ion-content> 
}); 

export class ListPage { 

    constructor(nav, navParams) { 
     this.id = "123"; 

     //This could be any method (ajax call or just an event emitter) 
     asyncMethodWithCallBack(function(result) 
     { 
      this.id = result; //Cannot find this.id 
     } 
    } 
} 

です。

私はここで簡単なことをしているに違いないが、私は新しいスコープを正しく理解していない。

答えて

4

あなたは矢印関数は字句この使用することができるようにする必要があります:MDNから

asyncMethodWithCallBack((result) => 
    { 
     this.id = result; //Cannot find this.id 
    }); 

エキス(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions):矢印機能まで

は、すべての新しい機能は、独自にこの値を定義し(コンストラクタの場合は新しいオブジェクト、厳密モードの関数呼び出しでは未定義、関数が "オブジェクトメソッド"として呼び出された場合はコンテキストオブジェクトなど)。これは、オブジェクト指向のプログラミングスタイルに迷惑をかけることが判明しました。

矢印機能は、囲むコンテキストのこの値を取得します。

+0

スポットオン!ありがとう:)私の場合はdelegate.method =(args)=> {何かを返します。 } –

関連する問題