Ember.js 如何通过es6在ember(版本2.4.6)中获得所有注册路由器

Ember.js 如何通过es6在ember(版本2.4.6)中获得所有注册路由器,ember.js,ember-router,Ember.js,Ember Router,我需要在余烬应用程序中所有注册路由器的列表。 在互联网上搜索后,我找到了以下链接: 但这对我不起作用 这是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_FACTOR

我需要在余烬应用程序中所有注册路由器的列表。 在互联网上搜索后,我找到了以下链接:

但这对我不起作用

这是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;

这是get all路由器的应用程序Conroller

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”变量时,出现了以下错误: “无法读取未定义的属性‘router’。”

出现此问题的原因是“App.Router”中的“Router”为“未定义”


为什么“路由器”是“未定义的”?

每个余烬应用程序都有一个
路由器。所以我想你的意思是你想列出所有的路线

您可以按如下方式列出所有路线:

let router = Ember.getOwner(this).lookup('router:main');
let allRoutesList = router.get('router.recognizer.names');

注意:这适用于2.x版

每个余烬应用程序都有一个
路由器。所以我想你的意思是你想列出所有的路线

您可以按如下方式列出所有路线:

let router = Ember.getOwner(this).lookup('router:main');
let allRoutesList = router.get('router.recognizer.names');

注意:这适用于2.x版

谢谢,您的回答帮助了我。但是有没有可靠的来源可以找到关于ember的这些问题的答案?在ember v3中不再有效。*但是你可能会发现新的路由器服务存在漏洞。@MattJensen是的,我不尝试使用v3.x这已经被弃用:使用
路由器。_routerMicrolib.recognizer.names
。谢谢,你的回答帮助了我。但是,有没有可靠的来源可以找到关于ember的这些问题的答案?在ember v3中不再有效。*但是,您可能会发现新路由器服务存在漏洞。@MattJensen是的,我不尝试使用v3.x。这已经被弃用:使用
路由器。_routerMicrolib.recognizer.names