Ember Inject Controller

The problem I got:

Just updated the Ember project to v1.13.5, and received this warning in brower console:

DEPRECATION: Controller#needs is deprecated, please use Ember.inject.controller() instead

However, I couldn’t find the documentation yet on how to write the new syntax.

Here is the Solution:

For some reason it’s marked as a private method in the docs, in order to see it you ll need to tick the private checkbox.

There are 2 ways to use it, with and without passing a controller name to it

App.PostController = Ember.Controller.extend({ posts: Ember.inject.controller()

When the name of the controller isn’t passed, ember uses the property name to look it up such as

posts: Ember.inject.controller(‘posts’).

You will only ever specify the controller name when the property and the controller have different names.

App.PostController = Ember.Controller.extend({ myPosts: Ember.inject.controller(‘posts’)

Originally published at victorleungtw.com on July 27, 2015.


Years of experience delivering enterprise projects with global stakeholders in banking, airline and gaming industries involving a broad range of technologies. Provide consulting services at both executive and operational levels, including strategy and data analysis. Lead web and mobile app development team with hands-on coding implementation. Manage projects as Certified Scrum Master with Agile techniques. Qualification with master degree in Computer Science and pursuing MBA degree in Finance.

Leave a Reply

Close Menu