I am trying to display a list of calendar events by week. A kicker is an attempt to reuse data already in DS.Store. This is the code that does this and for the most part works.
The problem is that my eventsChanged observer works too many times. When the router retrieves events from the server, the eventsChanged observer eventsChanged triggered for each entry. I understand why this is happening. What I am not getting is why there is no way to check if recordArray is being executed by loading a batch of records.
Does anyone have any suggestions?
App.CalendarWeekRoute = Ember.Route.extend model: (params) -> Ember.Object.create date: params.date login: params.login serialize: (model) -> date: model.get 'date' login: model.get 'login' setupController: (controller, model) -> App.Event.find login: model.get 'login' week: model.get 'date' events = App.Event.all() days = App.DaysOfWeekFor( model.get('date') )
EDIT This is my current hack. Using Unofficial Ember.debounce
eventsChanged: ( -> days = @get 'content' children = @get '_subControllers' events = @get 'events' user = @get 'user' return unless days and children and events and user days.forEach (date) -> controller = children.findProperty 'content', date content = events.filter (event) -> (event.get('date') is date) and (event.get('user') is user) if content controller.set 'content', content ).observes('content', 'didUpdate') notifyEventsChanged: Ember.debounce( @ (_this) -> _this.notifyPropertyChange('didUpdate') 200 false ).observes(' events.@each ')
source share