2016-08-01 54 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