2014-12-03 81 views
1

在老同學燼,我有這樣的注入應用控制器到一個組件的初始化:注入Ember-CLI中的應用程序初始化程序?

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"); 
    } 
}); 

轉換這個初始化到灰燼-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中引用?

謝謝!

回答

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

謝謝!這比我的方式好得多。 – 2014-12-06 23:42:13

1

想出解決辦法:

import TopBreadcrumbsComponent from "frontend/components/top-breadcrumbs"; 

然後使用進口。