0

我有一个月历显示,我正在尝试列出该月安排的所有活动。它在启动时不起作用——没有出现任何事件。但是,如果我单击“下一步”(未显示)来切换月份,过滤就会起作用。(如果我切换回原来的月份,事件将根据需要显示。)

怀疑我在使用计算属性时有错误。

问题:如何在事件加载后触发 monthEvents 计算属性?

我知道它在启动时会触发一次,但还没有加载任何事件。(我已经搞定了:

console.log(this.get('controllers.events.content.get('length')) 

来自monthEvents,并且计数最初为零。

我希望它会在事件成功加载后重新启动。(我正在使用 Ember Data,并且正在 ApplicationRoute 中加载事件——这是一个错误吗?)

这是 MonthsEventsController:

App.MonthEventsController = Ember.ArrayController.extend({
  needs: ['events', 'month'],
  monthEvents: function() {
    var currentMonth = this.get('controllers.month.content');
    return this.get('controllers.events.content').filter(function(event) { 
      return currentMonth.doesContainDate(event.get('startTime'));
    });
  }.property('controllers.events@each.startTime', 'controllers.month.content')
});

以及加载事件的 ApplicationRoute:

App.ApplicationRoute = Ember.Route.extend({
  setupController: function() {
    this.controllerFor('events').set('content', App.Event.find());
  }
}

有任何想法吗?我的代码中是否有特定的地方我应该强制运行循环执行?(我尝试在代码中的各个随机点处折腾 Ember.run.sync(),但还没有运气。)或者我是否需要以不同的方式连接计算属性?

谢谢

4

0 回答 0