- Start Date: 2018-19-12
- RFC PR: #421
- Ember Issue: (leave this empty)
This RFC proposes the deprecation of ApplicationController#currentPath
and ApplicationController#currentRouteName
.
These APIs are no longer needed as the RouterService
now has RouterService#currentPath
and RouterService#currentRouteName
.
These fields are only ever present on the application controller which is a weird special casing that we would like to remove.
Additionally, it's likely that there are very few if any consumers of this API as it is not documented.
If you are reliant on ApplicationController#currentPath
and ApplicationController#currentRouteName
you can get the same functionality from the RouterService
to migrate, inject the RouterService
and read the currentRouteName
or currentPath
off of it.
Before:
// app/controllers/application.js
import Controller from '@ember/controller';
import fetch from 'fetch';
export default Controller.extend({
store: service('store'),
actions: {
sendPayload() {
fetch('/endpoint', {
method: 'POST',
body: JSON.stringify({
route: this.currentRouteName
})
});
}
}
})
After:
// app/controllers/application.js
import Controller from '@ember/controller';
import fetch from 'fetch';
export default Controller.extend({
store: service('store'),
router: service('router'),
actions: {
sendPayload() {
fetch('/endpoint', {
method: 'POST',
body: JSON.stringify({
route: this.router.currentRouteName
})
});
}
}
})
There is likely very few consumers of this functionality and migration path is covered by existing documentation.
This may introduce churn that we are not aware of.
No real alternative other than keep setting the properties.
Optional, but suggested for first drafts. What parts of the design are still TBD?