2016-08-01 63 views
0

我目前的任務是將來自另一個服務的外部JS小部件附加到Angular 2項目中。這個小部件需要在全局範圍中聲明的params函數中作爲回調函數返回數據。 我最好的想法是在角度2風格中做它是爲了描述類中的函數(下面的代碼)。Angular 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