有没有类似`onload`的Ember事件

Is there any Ember event similar to `onload`

我想在我的 Ember 应用程序中加载所有内容(例如图像)后执行 JavaScript。

我已经尝试使用 didInsertElement()didRender() 挂钩,但看起来它们不会等待加载背景图像。

我的组件的代码片段如下所示:

export default Ember.Component.extend({
    didInsertElement() {
      this._super(...arguments);
      Ember.run.scheduleOnce('afterRender', this, function() {
        var home =$('#main-outlet')[0];
        home.className += " homePage";
        startTimer(5);
      });
    },
});

对此有任何解决方案或替代方法吗?

Ember 没有相当于 onload.

的事件

但是,关于另一种方法,您可以利用 Ember 对 jQuery 的别名,结合组件中的 didInsertElement 挂钩,来实现执行顺序你正在寻找的。试试这个:

export default Ember.Component.extend({
  didInsertElement() {
    Ember.$(window).on('load', this.executeCssAnimations);
  },

  executeCssAnimations() {
    // your CSS and animation logic would go here
    Ember.$('.big-background')
         .text('NOW READY FOR CSS and ANIMATION UPDATES.')
         .css('color', 'yellow');
  },

  willDestroyElement(...args) {
    this._super(...args);
    Ember.$(window).off('load', 'window', this.executeCssAnimations);
  },
});

willDestroyElement 挂钩也已包括在内,以显示从 window.

中正确拆卸和删除 load 事件侦听器

我创建了一个 Ember Twiddle example 来为您演示。