Ember.js 为什么Ember.run afterRender不适用于CSS转换?

Ember.js 为什么Ember.run afterRender不适用于CSS转换?,ember.js,css-transitions,Ember.js,Css Transitions,根据我的理解,使用CSS转换的一种方法是使用Ember.run.scheduleOnce('afterRender') 但是,对我来说,如果不添加超时,它将无法工作。这是在余烬1.0.0 View = Em.View.extend({ didInsertElement: function() { Ember.run.scheduleOnce('afterRender', this, 'animateModalOpen'); }, animateModalOpen: func

根据我的理解,使用CSS转换的一种方法是使用
Ember.run.scheduleOnce('afterRender')

但是,对我来说,如果不添加超时,它将无法工作。这是在余烬1.0.0

View = Em.View.extend({
  didInsertElement: function() {
    Ember.run.scheduleOnce('afterRender', this, 'animateModalOpen');
  },

  animateModalOpen: function() {
    // this does not work - modal gets styles from class "in" with no transition
    $('.modal').addClass('in');

    // this does work, the transition is fired
      setTimeout(function() {
        $('.modal').addClass('in');
      }, 1);
    }
  },
});

这是一个曾经有用却不再有用的东西,还是我遗漏了什么?

Ember.run.next
在这类事情上对我来说非常有效

didInsertElement: function() {
  Ember.run.next(this, this.animateModalOpen);
}

谢谢在更仔细地阅读文档之后,很明显afterRender是在呈现DOM元素之后但在最终插入之前,因此对于维度计算等来说是可以的,但是对于css转换来说太早了。很高兴知道。感谢您发布后续文章。我正在通过Ember.run.schedule向DOM元素添加CSS类。它在我单步执行代码时起作用,但在一个步骤中,元素必须已重新呈现,并且我添加的类已消失。将Ember.run.schedule更改为Ember.run.next为我解决了这个问题。