【问题标题】:How to inject components in whole application in ember.js如何在 ember.js 的整个应用程序中注入组件
【发布时间】:2016-11-11 10:35:12
【问题描述】:

我正在开发一个 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 中实现这一点的原因或提供解决方案(如果可以实现)方面的任何帮助都很棒。在此先感谢各位。

【问题讨论】:

  • 为什么不使用application.hbs?

标签: ember.js service ember-data components ember-cli


【解决方案1】:

注入模板没有意义。

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

-common.hbs

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

另一个.hbs

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

【讨论】:

  • 非常感谢@Ebrahim。这对我有用,因为我不想在所有模板中重复代码
  • @nagarjuna 很高兴为您提供帮助。因此,如果您的问题得到解决,请接受我的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-12
  • 1970-01-01
  • 2012-12-21
  • 2020-09-26
  • 2012-07-28
  • 2019-02-22
  • 1970-01-01
相关资源
最近更新 更多