從Ember.CollectionView有一個簡單的方法來調用一個函數後,所有的childView元素已被渲染?Ember.CollectionView所有的孩子didInsertElement回調
就像所有孩子的didInsertElement一樣。
這就是我現在要做的。有沒有更好的辦法?
App.CollectionView = Ember.CollectionView.extend
didInsertChildElements: (->
if @get('childViews').everyProperty('state', 'inDOM')
@dosomething()
).observes('childViews')
itemViewClass: Ember.View.extend()
編輯這裏是我想要做的更好的例子。
對於每個ChildView,我使用didInsertElement設置位置,然後從父級使用父級didInsertElement回調來滾動到指定的子級。問題是在孩子的父母的didInsertElement回調被調用之前。
App.CollectionView = Ember.CollectionView.extend
dateBinding: 'controller.date'
didInsertElement: ->
#@scrollTo @get('date')#old way
Ember.run.scheduleOnce('afterRender', @, 'scrollToDate')
scrollToDate: ->
@scrollTo @get('date')
scrollTo: (date) ->
day = @get('childViews').findProperty('date', date)
pos = day.get('position')
#console.log pos
@$().scrollTop(pos)
itemViewClass: Ember.View.extend
templateName: 'home/day'
dateBinding: 'content.date'
position: null
didInsertElement: ->
@set 'position', @$().offset().top
#console.log @get('position')
編輯
調度AfterRender階段回調的作品! Ember.run.scheduleOnce(「AfterRender階段」 @「scrollToDate」)