iOS dev
iOS dev

Reputation: 470

How to inject components in whole application in ember.js

I'm on developing a ember-cli project where I have created many reusable components. I want these components in every template(hbs) file. I can do {{component1}} {{component2}} {{component3}} in each template but this looks redundant to me since I've to write all these lines in every template. All I want to know is if I can inject components in all the templates like way services are injected into routes, components etc where ever I need.

Example of how I inject services is below

 /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');
 });

I tried injecting the components into templates as similar as above.

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

As expected, the above code fails. No where in the ember guides is mentioned that I can inject components in templates. But, wanted to know if anybody did this before.

I believe there could be a strong reason why ember is not allowing us to inject components into templates.

Any help in explaining the reason why this cannot be implemented in ember.js is great or providing a solution if it can be implemented is awesome. Thanks in advance guys.

Upvotes: 0

Views: 470

Answers (1)

Ebrahim Pasbani
Ebrahim Pasbani

Reputation: 9406

Injecting to template is not meaningful.

You can create a partial template and put that common components there then use that partial.

-common.hbs

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

another.hbs

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

Upvotes: 1

Related Questions