2011-07-11 52 views

回答

2

您正朝着正确的方向前进。你只需要通过你想要待办事项的国旗。可以找到一个例子here

要详细说明下面的示例,有几个语法错误,您可能需要不同的标志。我不确定为什么需要警报,这听起来像事件循环没有被旋转。在什么情况下你称这些位?

试试这个:

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

感谢你的榜样,我明白了如何实现这是我的主要问题的听众。

因此,这里是我的代码:

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

不过,我有一个很奇怪的问题在这里。其实,我没有得到这个代码的待办事项。我必须在getItems()方法之后添加一个alert("something");以获取我的数组项目。否则,它是空的。

+0

侦听器是异步的,您需要在调用getItems之后旋转事件循环,或者更好地更改模式以继续在侦听器或嵌套函数中处理。 –