我有一个用例,我想在初始化程序中动态注册路由。 因为该应用程序是一个自定义应用程序,所以我不知道开发时的路线。
目前我创建了一个实例初始化程序:
import Ember from 'ember';
const myTempRouteList = ['home']; // this is retrieved from the backend
export function initialize(instance) {
let container = instance.container;
let router = container.lookup('router:main');
myTempRouteList.forEach(function (name) {
let routeName = name.dasherize();
router.map(function(){ // router.map is undefined here
this.resource(routeName, {path: routeName});
});
container.register(`route:${routeName}`, Ember.Route.extend({
}));
}, this);
}
export default {
name: 'register-routes',
initialize: initialize
};
问题是路由器实例存在,但没有方法 map
。在 documentation它被描述为公共(public)方法。我检查过的其他一些方法还存在,例如有路由
。
最佳答案
事实证明,我必须调用容器上的 lookupFactory
方法而不是 lookup
方法。
export function initialize(instance) {
let container = instance.container;
let router = container.lookupFactory('router:main');
...
}
关于ember.js - 如何在初始化程序中获取 Router 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31647559/