我想按周顯示日曆事件列表。踢球者是我試圖重用DS.Store中已有的數據。這是它的代碼,它在大多數情況下工作。ember-data觀察記錄數組isUpload/isUpdating/hasUpdated?
問題是我的eventsChanged
觀察者運行的方式太多了。當路由器從服務器獲取事件時,eventsChanged
觀察員爲每個記錄觸發。我明白爲什麼會發生。我沒有得到的是爲什麼沒有辦法來檢查recordArray是否完成加載一批記錄。
有沒有人有任何建議?
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')) #returns array of dates
controller.setProperties
content: days
events: events
App.CalendarWeekController = Em.ArrayController.extend
itemController: 'calendarDay'
events: null
eventsChanged: (->
#don't run if more records are scheduled to be loaded
#return if @get 'events.isUpdating'
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', '[email protected]')
編輯這是我目前的破解。使用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('[email protected]')
我不知道這是否是一個錯誤,但真正的幾乎立即isLoaded回報。我目前的做法是在添加的記錄停止之後推遲該函數的最後一次執行。 – 2013-05-03 01:13:43
我已將我的黑客加入我的示例中。讓我知道你的想法。我認爲這個(https://github.com/emberjs/data/pull/735)是一個相關的對話。 – 2013-05-03 01:19:25