Ember.js 为什么Ember.run afterRender不适用于CSS转换?
根据我的理解,使用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
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为我解决了这个问题。