ember.js 如何在整个应用程序中注入组件

How to inject components in whole application in ember.js

我正在开发一个 ember-cli 项目,我在其中创建了许多可重用的组件。我希望每个模板(hbs)文件中都有这些组件。我可以在每个模板中执行 {{component1}} {{component2}} {{component3}} 但这对我来说看起来是多余的,因为我必须在每个模板中编写所有这些行。我只想知道我是否可以在所有模板中注入组件,就像将服务注入路由、组件等任何我需要的地方一样。

下面是我如何注入服务的示例

 /intializers/session-object.js
 export function intialize (application){
      application.inject('route','session','service:session');
      application.inject('controller','session','service:session');
      application.inject('component','session','service:session');
      application.inject('adapter','session','service:session');
 });

我尝试将组件注入到与上述类似的模板中。

 /intializers/session-object.js
 export function intialize (application){
      application.inject('template','my-component','component:my-component');          
 });

不出所料,上面的代码失败了。 ember 指南中没有提到我可以在模板中注入组件。但是,想知道以前是否有人这样做过。

我相信 ember 不允许我们将组件注入模板可能有充分的理由。

任何帮助解释无法在 ember.js 中实施的原因的帮助都很棒,或者提供解决方案(如果可以实施)也很棒。提前谢谢大家。

注入模板没有意义。

您可以创建一个部分模板并将通用组件放在那里然后使用该部分。

-common.hbs

{{nav-bar}}
{{error-messages}}

another.hbs

{{partial 'path-to-common-template'}}