繼續我的上一篇文章:ui-calendar is not working, not rendering events如何在事件到達時(通過承諾)重新繪製(重新呈現)UI日曆?
我使用angularjs ui-calendar接受事件數組作爲ng-model在日曆中顯示它們。
問題是事件必須在瀏覽器呈現日曆之前準備好並定義。
我在控制器這樣定義的事件:
events2 = [{
title: 'Event1',
start: '2017-09-27',
end: '2017-09-27'
}];
events3 = [{
title: 'Event2',
start: '2017-09-28',
end: '2017-09-28'
}];
然後在$ OnInit中(或在控制器的構造函數)我設置:
this.eventSources = [this.events2, this.events3];
而在HTML我定義組件爲:
<div ng-model="vm.eventSources" ui-calendar></div>
一切工作正常。
但是,正如您所看到的,事件是硬編碼的,並且在呈現日曆之前可用。
在我的真實情況中,我通過調用Google Calendar API來獲取事件,並且延遲返回事件(通過承諾),因此,當我從Google服務獲取事件時,需要觸發REDRAW日曆。
我該怎麼做? ui-calendar不是一個簡單的HTML控件,它會在ng-model改變時顯示更改,但會顯示第三方組件,所以在這種情況下,我需要在事件到達後觸發日曆的重新呈現。
任何想法如何做到這一點?
這是調用谷歌服務來獲取事件的方法:
getCalendarEvents() {
console.log('getCalendarEvents');
this.service.getCalendarEvents().then(events => {
//this.events = <CalendarEvent[]>events;
this.eventSources = [this.events2, this.events3];
});
}
即使我使用硬編碼的事件之後然後日曆不顯示它們,它需要有一個新的值被重繪in this.eventSources
請指教!使用$ scope。$ apply()不起作用。