Как получить все зарегистрированные роутеры в ember (версия 2.4.6) от es6

Мне нужен список всех зарегистрированных маршрутизаторов в приложении ember. После поиска в Интернете я нашел ссылку ниже:

можем ли мы просмотреть все маршруты в emberjs, что-то вроде того, что делает rake routes в рельсах

Получение списка маршрутов в Ember.js

Но у меня не работает.

это 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;

и это Application 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', равное undefined».

Эта проблема возникает из-за того, что «Маршрутизатор» в «App.Router» имеет значение «undefined».

почему "Маршрутизатор" не определен?


person mAhnaz sHeikhi    schedule 09.07.2016    source источник


Ответы (1)


На каждое приложение Ember приходится один Router. Итак, я думаю, вы имеете в виду, что хотите перечислить все маршруты.

Вы можете перечислить все маршруты следующим образом:

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

Примечание. Это работает с версией 2.x.

person Ebrahim Pasbani    schedule 09.07.2016
comment
Спасибо, Ваши ответы мне помогли. Но есть ли надежный источник, который может найти ответы на эти вопросы об углекислом газе? - person mAhnaz sHeikhi; 10.07.2016
comment
Больше не работает в ember v3. *, Однако вы можете найти взлом с новой службой маршрутизатора. - person Matt Jensen; 23.07.2018
comment
@MattJensen Да, я не пробую с v3.x - person Ebrahim Pasbani; 24.07.2018
comment
Это устарело: вместо этого используйте router._routerMicrolib.recognizer.names. - person kleinfreund; 24.10.2018