Document Fragments in Component Lifecycle

I love that components give you methods that run before and after it’s been inserted into the DOM. However, is there not a way to access the document fragment that has been built prior to it’s insertion?

Wouldn’t that be a far better way of, for example, attaching third party jQuery plugins to a DOM element. Rather than querying for the element post-insertion?

Essentially:

export default Ember.Component.extend({
  willRender() {
    this.$().find('element').tooltip();
  }
});

$() this being a reference to the document fragment in memory, which will later be the same DOM element that is available to didInsertElement.

2 Likes

I’m really curious about this as well. In fact, coming to Ember from Angular (albeit a long time ago), that was my original intuition about how the Component Lifecycle might have worked before I truly began digging into each piece.

To add another use case alongside @davearel’s, it seems like programmatically setting style properties on the element’s HTMLElement interface (if one needed to do so, that is) could be optimized if it were done pre-insertion:

export default Ember.Component.extend({

  willRender() {
    this._super(...arguments);
    if (this.expandFromTopRightCorner) {
      this.element.style.transformOrigin = 'right top';
   }
  }
});
1 Like