为什么我无法使用$ cordovaCalendar创建日历活动?

时间:2016-11-29 12:09:58

标签: angularjs cordova ionic-framework phonegap-plugins

我想在我的应用的设备日历中显示活动提醒,并尝试使用ngCordova的$cordovaCalendarPhonegap Calendar Plugin来实现此目的。使用ngCordova网站上的说明我设置了ngCordova并安装了插件,但我遇到了以下问题:

TypeError: Cannot read property <code>calendar</code> of undefined

错误指向ng-cordova.js文件中的以下代码:

 $window.plugins.calendar.createEvent(
          defaultOptions.title,
          defaultOptions.location,
          defaultOptions.notes,
          new Date(defaultOptions.startDate),
          new Date(defaultOptions.endDate),
          function (message) {
            d.resolve(message);
          }, function (error) {
            d.reject(error);
          }
        );

我的控制器代码:

.controller('CalendarCtrl', function ($scope, $cordovaCalendar) {
  $cordovaCalendar.createEvent({
    title: 'Space Race',
    location: 'The Moon',
    notes: 'Bring sandwiches',
    startDate: new Date(2015, 0, 6, 18, 30, 0, 0, 0),
    endDate: new Date(2015, 1, 6, 12, 0, 0, 0, 0)
  }).then(function (result) {
    // success
  }, function (err) {
    // error
  });
})

2 个答案:

答案 0 :(得分:2)

这些问题通常是由于插件没有正确安装或者没有等待加载所有Cordova插件引起的,我想你可能会在这里处理第二个问题。添加$ionicPlatform作为依赖项并尝试以下操作:

$ionicPlatform.ready(function() {
  $cordovaCalendar.createEvent({
    title: 'Space Race',
    location: 'The Moon',
    notes: 'Bring sandwiches',
    startDate: new Date(2015, 0, 6, 18, 30, 0, 0, 0),
    endDate: new Date(2015, 1, 6, 12, 0, 0, 0, 0)
  }).then(function (result) {
    // success
  }, function (err) {
   // error
  });
});

$ionicPlatform.ready确保在执行其作用域内的任何已定义函数之前加载所有插件,否则您在加载插件之前尝试调用该插件。

答案 1 :(得分:0)

在提供答案之前,我需要了解以下内容:

  • 您使用的是实际的设备或模拟器(不是浏览器)?
  • 您的HTML中包含对cordova.js的引用吗?
  • 插件实际上已添加,并且证据显示在config.xml中?