我有一个月历显示,我正在尝试列出该月安排的所有活动。它在启动时不起作用——没有出现任何事件。但是,如果我单击“下一步”(未显示)来切换月份,过滤就会起作用。(如果我切换回原来的月份,事件将根据需要显示。)
怀疑我在使用计算属性时有错误。
问题:如何在事件加载后触发 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(),但还没有运气。)或者我是否需要以不同的方式连接计算属性?
谢谢