-
-
Notifications
You must be signed in to change notification settings - Fork 4.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Pod routable component ignored if next to route.js in same directory #12154
Comments
I am unsure about the reasoning behind that conditional, assigning to @ebryn for review. |
(Fixes emberjs#12154) If there's a template the same name as the route, that template is used instead of a routable component even if a component name is passed in the options hash to `route.render`.
In case it's useful, here's a jsbin demonstrating the issue: http://emberjs.jsbin.com/gipicibobo/1/edit?html,js,output Here is the same jsbin, but using an Ember build with the Branch here: https://github.com/mdehoog/ember.js/tree/pod-routable-components-fix, happy to raise a PR. |
(Fixes emberjs#12154) If there's a template the same name as the route, that template is used instead of a routable component even if a component name is passed in the options hash to `route.render`.
If anyone else runs into this issue, I'm currently extending the App = Ember.Application.extend({
Resolver: Resolver.extend({
resolveRoute: function (parsedName) {
const componentsFullName = parsedName.type + ':components/' + parsedName.fullNameWithoutType;
return this._super(parsedName) || this._super(this.parseName(componentsFullName));
}
})
}); This has the added benefit of not requiring the This issue can be closed as the above works well for now, and the routable components implementation is likely to change as the RFC (emberjs/rfcs#38) is implemented. |
Thanks for following up and providing a solution! |
I'm using both pods and routable components (thanks to PR #11939) in my application. I would love for the
route.js
definition for each routable component to sit next to the component itself, just like you can do with controllers. For example, I structure my routable componenthome
as follows:I then map the route:
In
route.js
I render thehome
component usingrenderTemplate
:However, the component object is never actually created, as the conditional (
ember.js/packages/ember-routing/lib/system/route.js
Line 2151 in 7c8d59a
template
is defined. This is because the route and the template have the same path. The template is rendered, but without usingcomponent.js
.I would have thought that, if
component
is defined in the options passed to the render method AND that component exists and satisfies the requirements (is a glimmer component), it should prefer the component and not fallback to the template.I suggest that
!template
is removed from the conditional statement, or at least ignored ifcomponent
is defined in the options and the component matches routable component requirements.The text was updated successfully, but these errors were encountered: