Есть ли какое-либо событие Ember, похожее на `onload`?

Я хочу выполнить JavaScript, когда весь контент (например, изображения) был загружен в мое приложение Ember.

Я уже пытался использовать 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);
      });
    },
});

Любое решение или альтернативный подход для этого?

1 ответ

Решение

У 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 крюк был также включен, чтобы показать надлежащий демонтаж и удаление load слушатель событий из window,

Я создал пример Ember Twiddle, чтобы продемонстрировать это для вас.

Другие вопросы по тегам