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

Смежные вопросы