如何使用Ionic Native Calendar插件通过JSON动态添加日历事件

时间:2017-10-18 12:49:26

标签: javascript json ionic-framework ionic2 calendar

美好的一天,

我正在构建一个离子应用并使用Ionic Native Calendar plugin。我想使用此插件能够通过链接到Firebase数据库的JSON动态更改与之关联的日历事件参数,而不是根据演示设置这些应用程序(因为我的日历事件将始终更改)。您可以设置的日历参数包括字符串以及开始和结束日期,这让我相信这可能会实现吗?

根据文档,我目前使用下面的方法使应用程序正常工作,但是此方法不允许我动态更新数据,因为我必须将日历参数放在应用程序中,特别是{{1根据我目前的情况,现在......

在我的 home.ts 文件中,我有一个按钮,一旦点击就会创建一个日历事件:

home.html

在我的 home.ts 文件中,我设置了以下功能:

<button ion-button (click)="createEvent()">Add to Calendar</button>

然后在我import firebase from 'firebase'; constructor(...) { firebase.database().ref('events').on('value', snapshot => { this.events = snapshot.val(); }); } 文件中的constructor之外我写了以下函数...

home.ts

我当前的JSON结构(在我的页面上提取其他信息)目前看起来像这样:

createEvent() {
    this.calendar.createEvent('Easter Celebration', 'myChurch', 'Be there or be square', new Date(2017, 9, 20, 13, 0, 0, 0), 
    new Date(2017, 9, 20, 14, 0, 0, 0)).then(() => {
      console.log('Event Created!');
    }).catch((err) => {
      console.log('Oops, something went wrong:', err);
    });
  }

我的JSON文件已链接到Firebase数据库。

问题是我无法使用上述方法动态更改日历值。我想知道如何通过从JSON文件中调用值来实现相同的目标,而不是根据我的示例我必须在应用程序中使用它们。我已经有一个JSON文件在我的应用程序中动态控制其他数据,所以我希望能够将日历值添加到此。

1 个答案:

答案 0 :(得分:0)

我试图根据您的最新动态回答这个问题,如果那不是您想要做的事情让我知道我会相应地更新我的答案:

所以你说你从firebase获得你的json,那不是文件。

要在实例变量中始终拥有最新版本的json,您必须创建类似这样的构造:

export class MyClass {
  public events; // this is where we save your json data so its accessible in the whole class

  constructor(...) { // here you should have injected your firebase lib
    firebase.database().ref('events').on('value', snapshot => {
      this.events = snapshot.val();
      console.log(this.events); // for debugging
    });
  }
}

然后您可以在createEvent()函数中访问它:

createEvent() {
  this.calendar
    .createEvent(
      this.events.events[0].title,
      this.events.events[0].address,
      ...
    )
    .then(() => {
      console.log('Event Created!');
    })
    .catch(err => {
      console.log('Oops, something went wrong:', err);
    });
}

请注意eventsundefined,直到从firebase加载数据为止。