Ember Inject Controller

The problem I got:

Just updated the Ember project to v1.13.5, and received this warning in the browser 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.