在旧校Ember,我有一个初始化程序,它将应用程序控制器注入一个组件:
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中引用它?
谢谢!
答案 0 :(得分:2)
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');
}
};
答案 1 :(得分:1)
找出解决方案:
import TopBreadcrumbsComponent from "frontend/components/top-breadcrumbs";
然后使用该导入。