emberjs / ember-render-modifiers

Implements did-insert / did-update / will-destroy modifiers for emberjs/rfcs#415
MIT License
85 stars 34 forks source link

Modifiers don't seem to work when applied to elements are ember components with `tagName=''` #15

Open DLiblik opened 5 years ago

DLiblik commented 5 years ago

Using modifiers on an element that is itself a classic Ember component (@ember/component) doesn't seem to work. This poses difficulties because the developer now has to 'know' :godmode: what the other component is.

This works great:

<div {{did-insert this.someFunc}}>
</div>

This not so much (doesn't error, doesn't execute).

<SomeOtherEmberComponent {{did-insert this.someFunc}}>
</SomeOtherEmberComponent>
DLiblik commented 5 years ago

Apologies - I updated the name and content of the first comment - I misspoke on glimmer vs. ember. Issue is correct now.

DLiblik commented 5 years ago

Further update - some more testing reveals that the issue only occurs when the target component has tagName='' - we can work around this by converting those components to @glimmer/component as well, but not where we don't own them (add-ons, etc.).

rwjblue commented 5 years ago

Confirm, when using tagName: '' there is no element to modify. Arguably, this should error (just like it would error if you specified attributeBindings or click on that component), but I'm not exactly sure how we'd do that.

DLiblik commented 5 years ago

As the issue unfolds here a little further, it's worth mentioning that the parent glimmer component (GC) needs to use the did-update modifier, not to alter the element, but to detect changes on an incoming attribute on the GC. Not the intended use of a modifier, but not sure GCs offer any other way to do so - thinking an EC task with waitForProperty and a callback, and having it perform itself as a tail call, but that's really just an observer hack.

Any thoughts?

sandstrom commented 2 years ago

I'm doing some issue gardening 🌱🌿 🌷 and came upon this issue. Since it's quite old I just wanted to ask if this is still relevant? If it isn't, maybe we can close this issue!

By closing some old issues we reduce the list of open issues to a more manageable set.

DLiblik commented 2 years ago

This is covered by https://github.com/machty/emblem.js/issues/340 but is still an issue - the fundamental point being that modifiers don't work "as one might intuitively expect at first glance" when used on components - if #340 is solved, I think this would cease to be a problem.