2016-11-01 4 views
0

私は、フルカレンダーコンポーネントを持っているangular2アプリを持っています。 eventClickコールバックを使用してフルカレンダーイベントのクリック時にダイアログを表示したいとします。Angular2 FullCalendarコールバックアクセスできないプロパティ

export class ScheduleComponent implements OnInit{ 

events: CalendarEvent[]; 
display: boolean; 
tables: SelectItem[]; 
selectedTable: string; 

ngOnInit(){ 
    this.display = false; 
    this.scheduleService.GetAllEvents().subscribe((data: CalendarEvent[]) => 
      { 
       this.events = data; 
       var calendar: JQuery = $("#calendar"); 
       (<any>calendar).fullCalendar({ 
        eventClick: function(event) { 
         this.display = true; 
         return false; 
        } 
       }); 
      }); 
} 

}

これは非常に単純化したバージョンですが、すべての情報は、必要に応じて与える必要があります:私はこれを行うには、次のコードを持っています。

私の問題は、コールバック内のeventClickコール内の行がdisplayプロパティを表示できないようです。

これはなぜ、どのように私はそれを修正することが誰が知っていますか?

おかげで、

答えて

1

一般的に質問を投稿した後、私は今、解像度を出してきました。

これで苦労する誰かの解決策は、「太い矢印」表記を使用することです。

ので、代わりにこの:

eventClick: (event) => { 
         this.display = true; 
         return false; 
        }, 

イムではない、それだけで試行錯誤したとして、これがどのように動作するか、あまりにも確認してください:

eventClick: function(event) { 
         this.display = true; 
         return false; 
        } 

私はこれを使用していました。なぜ誰かがなぜそれを説明し、それを説明することができれば、私はなぜそれを見つけるのに非常に興味があるでしょう。

+0

コンパイル上のJavaScriptに変換活字体の脂肪の矢印表記は親「これは」あなたは_this = VARとしてあなたの.jsファイルでそれを見ることができますへの参照を与えるjavascriptのbindメソッドを使ってこれを行うことができますこの;後続の機能コードは参照_this.display = trueを使用します。 – kevindstanley

0

あなたが直面した課題は、スコープと関係していました。 実行時に、この値が変更され、アクセスできなくなります。

レキシカルスコープは、これを解決する方法の1つであり、上記で行ったことです。

メソッドのコンテキストをthisにバインドして、そのコンテキスト内で実行することもできます。

あなたは

関連する問題