Я не могу найти, как получить все задачи календаря в Lightning. Я думал, что функции getItem()
и getItems()
из интерфейса calICalendar
(здесь) были решением, но я не мог заставить его работать должным образом.
Как получить задачи из календарей Thunderbird/Lightning?
Ответы (2)
Вы идете в правильном направлении. Вам просто нужно передать флаг, который вы хотите только todos. Пример можно найти здесь.
Чтобы подробнее рассказать о вашем примере ниже, есть несколько синтаксических ошибок, и вам могут понадобиться другие флаги. Я не уверен, зачем нужно предупреждение, мне кажется, что цикл событий не вращается. В каком контексте вы называете эти биты?
Попробуй это:
var arrayItems = new Array();
var todoListener = {
onOperationComplete: function(aCalendar, aStatus, aOperationType, aId, aDetail) {},
onGetResult: function(aCalendar, aStatus, aItemType, aDetail, aCount, aItems) {
arrayItems = arrayItems.concat(aItems);
}
};
var filter = aCalendar.ITEM_FILTER_TYPE_TODO | aCalendar.ITEM_FILTER_COMPLETED_ALL;
aCalendar.getItems(filter, 0, null, null, todoListener);
Благодаря вашему примеру я понял, как реализовать слушателя, который был моей основной проблемой.
Итак, вот что я кодирую:
var arrayItem = new Array; ;
var todoListener =
{
onOperationComplete: function(aCalendar, aStatus, aOperationType, aId, aDetail) {},
onGetResult: function(aCalendar, aStatus, aItemType, aDetail, aCount, aItems)
{
for (let i=0; i < aCount; i++)
{
arrayItem.push(aItems[i]);
}
}
};
var filter = aCalendar.ITEM_FILTER_ALL_ITEMS;
filter |= aCalendar.ITEM_FILTER_TYPE_TODO;
aCalendar.getItems(filter, 0, null, null, todoListener);
Тем не менее, у меня есть действительно странная проблема здесь. На самом деле, я не получаю задачи с этим кодом. Мне нужно добавить alert("something");
после метода getItems(), чтобы заполнить мой элемент массива. В противном случае он пуст.