Угловой календарь начальной загрузки не обновляет представление после добавления или обновления событий - PullRequest
0 голосов
/ 25 июня 2018

Я использую календарь начальной загрузки mattlewis. События отображаются корректно. Но если я добавляю новое событие в календарь, оно дублирует события в другие даты вместо добавления события к добавленной дате. Только после обновления страницы все работает отлично. Я пробовал $ scope. $ Apply тоже. Но, похоже, ничего не работает.

Вот мой HTML

<mwl-calendar events="events" view="calendarView" 
    view-date="viewDate" view-title="calendarTitle"
    on-event-click="eventClicked(calendarEvent)"
    on-event-times-changed="eventTimesChanged(calendarEvent);
    calendarEvent.startsAt = calendarNewEventStart; calendarEvent.endsAt = calendarNewEventEnd"
    cell-is-open="cellIsOpen" day-view-start="06:00"
    day-view-end="22:59" day-view-split="30"
    cell-modifier="cellModifier(calendarCell)"
    on-event-click="eventClicked(calendarEvent)"
    cell-auto-open-disabled="true"
    on-timespan-click="timespanClicked(calendarDate, calendarCell)">
</mwl-calendar>

Controller.js

$scope.events = [];
$scope.myevents = function(start, end, timezone, callback) {
    SalesNotifyService.getAllNotify().then(function(response) {
        $scope.allleadnotify  = response.data;
        console.log($scope.allleadnotify);
        var events = [];
        angular.forEach($scope.allleadnotify,function(event,key){
            var today = new Date();
            var notifyDates = new Date(event.notifyDate);
            if(event.leadName!=null){
                $scope.events.push({
                    title: event.notifyType,
                    startsAt : event.notifyDate,
                    endsAt : event.notifyEndDate,
                    withoffender: event.leadName,
                });
            } else {
                $scope.events.push({
                    title: event.notifyType,
                    startsAt : event.notifyDate,
                    endsAt : event.notifyEndDate,
                    withoffender: '',
                });
            }
        });
    });
}

Теперь после сохранения я вызываю функцию $ scope.myevents, как это

SalesNotifyService.saveNotify(notify).then(function(response){
    $scope.notify = response.data;
    $scope.myevents();
});

Но даже если я вызываю функцию myevents, события не заполняются в календаре должным образом. Если у меня уже есть события, то после добавления нового события старые события дублируются и отображаются. Если я перезагружаю страницу, то все в порядке. В HTML я Вызов функции myevents в ng-init. Может кто-нибудь сказать, как правильно отображать события после добавления события без перезагрузки страницы?

1 Ответ

0 голосов
/ 25 июня 2018

Может быть, вам нужно сбросить $ scope.events в пустой массив, прежде чем снова добавлять события?Если вы этого не сделаете, то каждый раз, когда вы вызываете $ scope.myevents (), вы снова добавляете события в тот же массив, не удаляя их.так в $ scope.myevents сделать $ scope.events = [] в начале функции

$ scope.events = events;и помещать события в локальный массив "events".

...