2016-12-02 79 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), 
    }] 

我的UI看起來是這樣的: enter image description here

這整個過程中工作得很好,但我現在面臨兩個問題:

  1. 如果有人從網絡界面刪除了一個事件,我們假設「Anuj Event」,那麼REST API將只返回「Rahul Event」,因爲另一個事件已被刪除,但它仍將位於設備的日曆中。我怎樣才能確定有不同並確保當應用程序同步時刪除「Anuj事件」?

  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); 

正如你可以看到它是可能通過一個標題爲參數,只應刪除與titlestartDateendDate匹配的事件。它看起來像您使用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,因爲它試圖從更廣泛的意義上回答你的問題。實質上,你必須想出一個同步數據的策略。關於如何實現這一點的細節很難回答,因爲它需要深入瞭解您的應用程序的工作方式。我建議你根據我提到的問題嘗試幾件事,如果遇到更具體的問題,請提出一個新問題。