从 Ember.CollectionView 是否有一种在渲染所有 childView 元素后调用函数的简单方法?
对于所有孩子来说,像 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')