如何通过es6获取所有注册的路由器(版本2.4.6) [英] How to get all registered routers in ember (version 2.4.6) by es6

查看:95
本文介绍了如何通过es6获取所有注册的路由器(版本2.4.6)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



我们可以查看emberjs中的所有路由,这些路由类似于rake路由在rails



获取Ember.js中的路线列表



但是对我来说不行。



这是App.js

 从ember导入Ember; 
从'./resolver'导入解析器;
从'ember-load-initializers'导入loadInitializers;
从'./config/environment'导入配置;
让App;
Ember.MODEL_FACTORY_INJECTIONS = true;
App = Ember.Application.extend({
modulePrefix:config.modulePrefix,
podModulePrefix:config.podModulePrefix,
Resolver,
ready:function(){
}
});
loadInitializers(App,config.modulePrefix);
导出默认应用程序;

这是router.js

 从ember导入Ember; 
从'./config/environment'导入配置;

const Router = Ember.Router.extend({
location:config.locationType
});

Router.map(function(){
this.route('about');
this.route('login');
});

导出默认路由器;






这是应用程序Conroller获取所有路由器

 从ember导入Ember; 
从'ember-app / app'导入应用程序;

导出默认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变量时错误发生:
无法读取属性'路由器'未定义。



出现此问题是因为App.Router中的路由器 未定义。



为什么路由器是未定义?

解决方案

每个ember应用程序都有一个 Router 。所以我想你的意思是要列出所有路线。



您可以列出所有这样的路线:

  let router = Ember.getOwner(本).lookup( '路由器:主要'); 
let allRoutesList = router.get('router.recognizer.names');


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');

这篇关于如何通过es6获取所有注册的路由器(版本2.4.6)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆