2016-08-01 4 views
0

私の現在の仕事は、別のサービスからの外部JSウィジェットをAngular 2プロジェクトに取り付けることです。このウィジェットは、データを返すコールバックとしてグローバルスコープで宣言されたparams関数で必要です。 角度2のスタイルでこれを行うには、クラス内の関数(以下のコード)を記述することをお勧めします。角2:window.functionNameのバインディングモデルが機能しない

initWidget(){ 
 
    window.widgetCallback = function(result){ 
 
    this.deliveryPoint = result; 
 
    }; 
 
    boxberry.open('widgetCallback', 'some', 'params'); 
 
}

この機能は正常に動作してdeliveryPointは、必要なデータを受信するが、私は、テンプレート内{{deliveryPoint}}を呼び出すときに、それはありません任意の結合がある - 変数更新されていません。

この問題を解決するにはどうすればよいですか?

+0

より多くのコンテキストを提供してください。このコードはどこに置いたのですか? 'this.deliveryPoint'はどこを参照すべきですか? –

+0

クラス内のメソッドを参照します。 – Vadim

答えて

1

問題があるが、私は代わりにfunction()修正問題の()=>を使用して前提と何あなたの質問から伝えるのは難しい:

constructor(private cdRef:ChangeDetectorRef) {} 

initWidget(){ 
    window.widgetCallback = (result) => { 
    this.deliveryPoint = result; 
    this.cdRef.detectChanges(); 
    }; 
    boxberry.open('widgetCallback', 'some', 'params'); 
} 
+0

このメソッドは機能しました。ありがとうございました。 – Vadim

+0

@yurzuiなぜあなたはあなたの答えを削除しましたか?私には正しいと思われ、あなたはより速かった。私は私が(更新と同じ)私の投稿後にそれを見た。 –

+0

これは問題ありません。私は 'markForCheck'と' detectChanges'を混在させました。 – yurzui

関連する問題