当Aurelia共享状态变量更改时更新日历

时间:2016-10-14 16:43:20

标签: aurelia

我正在使用FullCalendar,并希望每次全局变量“lang”更改时都更新内容。

我的共享状态Config类( src / common / config.js )如下:

export class Config {
  static lang;
  static sch;
  static qtr;

  constructor() {
    this.lang = 'es';
    this.sch = 1;
    this.qtr = 1;
  }

  getLang() {
    return this.lang;
  }
  setLang(lang) {
    this.lang = lang;
  }
}

我的活动课程( src / events / events.js )如下:

import { inject } from 'aurelia-framework';
import { Config } from '../common/config';
import { fullCalendar } from 'fullcalendar';

@inject(Config)
export class Events {

  constructor(config) {
    this.config = config;
  }

  attached() {
    $('#eventscalendar').fullCalendar({
      events: 'http://localhost:8080/api/v1/events-date-range?lang=' + this.config.getLang()
    });
  }
}

基本上,我想用新语言更新事件URL并重新加载事件(每次Config.lang更改时使用fullCalendar('refetchEvents')。如何在Aurelia中执行此操作,而无需进行显式调用来自Config(因为可能是语言的变化可能会对应用程序的许多不同部分产生影响)?我在想某种事件创建/监听器?

1 个答案:

答案 0 :(得分:4)

每当调用EventAggregator时,我都会使用setLang发布事件。您可以在Events类的构造函数中订阅该事件。

这里有一些文档:http://aurelia.io/hub.html#/doc/article/aurelia/framework/latest/cheat-sheet/10