在老派的 Ember 中,我有一个将应用程序 Controller 注入(inject)组件的初始化程序:
Ember.Application.initializer({
name: "TopBreadcrumbs",
initialize: function(container, application) {
application.register("component:top-breadcrumbs", App.TopBreadcrumbsComponent);
application.inject("component:top-breadcrumbs", "router", "router:main");
return application.inject("component:top-breadcrumbs", "applicationController", "controller:application");
}
});
将此初始化程序转换为 Ember-CLI 并因此转换为 ES6 模块,我有这个:
// initializers/top-breadcrumbs.js
export default {
name: "top-breadcrumbs",
initialize: function(container, application) {
application.register("component:top-breadcrumbs", App.TopBreadcrumbsComponent);
application.inject("component:top-breadcrumbs", "router", "router:main");
return application.inject("component:top-breadcrumbs", "applicationController", "controller:application");
}
};
问题是:如何以这种新格式引用 AppTopBreadcrumbsComponents? App
不再存在,并且该组件不再像以前那样是全局的...它像其他所有内容一样是 es6 模块。
我如何在 Ember-CLI 中引用它?
谢谢!
最佳答案
Vanilla Ember 中的
App
与接收到的 application
相同:
initialize: function(container, application) {
并且,要从您的应用程序访问组件,您可以将初始化程序设置为在应用程序对象准备就绪后加载:
after: 'registerComponents'
然后您可以通过以下方式查找它们:
var TopBreadcrumbsComponent = container.lookup('component:top-breadcrumbs');
所以:
export default {
name: "top-breadcrumbs",
after: 'registerComponents',
initialize: function(container, application) {
var TopBreadcrumbsComponent = container.lookup('component:top-breadcrumbs');
}
};
关于javascript - 在 Ember-CLI 的应用程序初始化程序中注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27281560/