2016-12-02 1 views
1

В настоящее время я использую PhoneGap Calendar plugin в своем приложении. Я могу добавлять события в календарь устройства, используя вызов REST API. Теперь я хотел бы синхронизировать данные напоминания из Интернета в календарь устройства. Для тестирования, я использую следующие данные в формате JSON:Как я могу правильно удалить события календаря с помощью плагина PhoneGap Calendar?

[ { title: 'Anuj Event', 
    location: 'Test', 
    notes: 'It is Party Time', 
    startDate: new Date(2016,11, 3, 12, 10, 0, 0, 0), 
    endDate: new Date(2016, 11, 3, 18, 45, 0, 0, 0), 
    },{ 
     title: 'Rahul Event', 
    location: 'Noida', 
    notes: 'Work Hard', 
    startDate: new Date(2016,11, 2, 12, 10, 0, 0, 0), 
    endDate: new Date(2016, 11, 2, 18, 45, 30, 45, 0), 
    }] 

My UI выглядит следующим образом: enter image description here

Весь этот процесс работает отлично, но я столкнулся два вопроса:

  1. Если кто-то удалит событие из веб-интерфейса, скажем, «Anuj Event», тогда REST API вернет «Rahul Event», поскольку другое событие было удалено, но оно все равно будет в календаре на устройстве. Как я могу определить, что существуют различия между ними и убедитесь, что «Anuj Event» удаляется, когда приложение синхронизируется?

  2. При удалении события из календаря все события определенной даты удаляются, а не по названию. Например, у меня есть три события в день, один - утром, второй - вечером, а третий - ночью. Если я хочу, чтобы удалить последнее событие, то я использую следующие параметры:

    startDate: new Date(2016,11, 1, 15, 32, 10, 50, 0), endDate: new Date(2016, 11, 1, 18, 45, 30, 45, 0)

    Но в конечном итоге удаление других событий, а также, как я могу решить эту проблему?

ответ

0

Начну с ответа на второй вопрос об исключении событий. Вы полагаетесь на диапазоны дат, когда есть несколько других параметров, доступных при удалении события, как показано на plugin documentation:

window.plugins.calendar.deleteEvent(newTitle,eventLocation,notes,startDate,endDate,success,error); 

Как вы можете видеть, что можно передать название в качестве параметра, который необходимо удалить только события, которые соответствуют title, startDate и endDate. Похоже, что вы используете ngCordova, так что будет выглядеть следующим образом:

$cordovaCalendar.deleteEvent({ 
    newTitle: 'Anuj Event', 
    startDate: new Date(2015, 2, 12, 19, 0, 0, 0, 0), 
    endDate: new Date(2015, 2, 12, 22, 30, 0, 0, 0) 
}).then(function (result) { 
    // success 
}, function (err) { 
    // error 
}); 

Что касается вашего вопроса о том, как сохранить веб и устройства календарь синхронизированный. Я бы рекомендовал посмотреть на this question, поскольку он пытается ответить на ваш вопрос в более широком смысле. По сути, вам нужно разработать стратегию синхронизации данных. Специфика о том, как реализовать это, трудно ответить, поскольку для этого потребуется глубокое понимание того, как работает ваше приложение. Я бы порекомендовал вам попробовать несколько вещей на основе вопроса, который я упомянул, и задать новый вопрос, если у вас возникнут более конкретные проблемы.