如何通过es6获取ember(版本2.4.6)中所有已注册的路由器
How to get all registered routers in ember (version 2.4.6) by es6
我需要 ember 应用程序中所有已注册路由器的列表。
在网上搜索后,我找到了下面的link:
can we view all the routes in emberjs aka something similar to what rake routes does in rails
但这对我不起作用。
这是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;
这是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;
这是获取所有路由器的应用程序控制器
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;
})
});
但是当我调用"allRouterCalc"变量时,这个错误发生了这个错误:
"Cannot read property 'router' of undefined".
出现这个问题是因为"App.Router"中的"Router"是"undefined"。
为什么 "Router" 是 "undefined"?
每个 ember 个应用程序对应一个 Router
。所以我认为你的意思是你想列出所有路线。
您可以像这样列出所有路线:
let router = Ember.getOwner(this).lookup('router:main');
let allRoutesList = router.get('router.recognizer.names');
注意:这适用于版本 2.x
我需要 ember 应用程序中所有已注册路由器的列表。 在网上搜索后,我找到了下面的link:
can we view all the routes in emberjs aka something similar to what rake routes does in rails
但这对我不起作用。
这是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;
这是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;
这是获取所有路由器的应用程序控制器
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;
})
});
但是当我调用"allRouterCalc"变量时,这个错误发生了这个错误: "Cannot read property 'router' of undefined".
出现这个问题是因为"App.Router"中的"Router"是"undefined"。
为什么 "Router" 是 "undefined"?
每个 ember 个应用程序对应一个 Router
。所以我认为你的意思是你想列出所有路线。
您可以像这样列出所有路线:
let router = Ember.getOwner(this).lookup('router:main');
let allRoutesList = router.get('router.recognizer.names');
注意:这适用于版本 2.x