I need a list of all registered routers in ember app. After searching on the Internet, I've found the link below:
can we view all the routes in emberjs aka something similar to what rake routes does in rails
Getting a list of routes in Ember.js
But it does not work for me.
this is App.js
import Ember from 'ember';
import Resolver from './resolver';
import loadInitializers from 'ember-load-initializers';
import config from './config/environment';
let App;
Ember.MODEL_FACTORY_INJECTIONS = true;
App = Ember.Application.extend({
modulePrefix: config.modulePrefix,
podModulePrefix: config.podModulePrefix,
Resolver,
ready: function () {
}
});
loadInitializers(App, config.modulePrefix);
export default App;
this is router.js
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: config.locationType
});
Router.map(function() {
this.route('about');
this.route('login');
});
export default Router;
and this is Application Conroller for get all routers
import Ember from 'ember';
import App from 'ember-app/app';
export default Ember.Controller.extend({
allRouter: [],
allRouterCalc: Ember.computed('allRouter', function() {
let allRouter = this.get('allRouter');
if(allRouter.length === 0)
{
allRouter = App.Router.router.recognizer.names;
}
return allRouter;
})
});
but when I called "allRouterCalc" variable, this error This bug occurs: "Cannot read property 'router' of undefined" .
This problem arises because the "Router" in "App.Router" is "undefined".
why "Router" is "undefined" ?
There is one Router
for every ember apps. So I think you mean you want list all routes.
You can list all routes like this :
let router = Ember.getOwner(this).lookup('router:main');
let allRoutesList = router.get('router.recognizer.names');
Note: This works with version 2.x