Ember Inject Controller
The Problem I Encountered:
After updating my Ember project to version 1.13.5, I received the following warning in the browser console:
_DEPRECATION: Controller#needs is deprecated. Please use Ember.inject.controller() instead._
However, I couldn’t find any documentation on how to implement the new syntax.
The Solution:
Though it’s marked as a private method in the Ember documentation, you can view it by selecting the “private” checkbox.
There are two ways to use Ember.inject.controller()
: with and without specifying a controller name.
_App.PostController = Ember.Controller.extend({ posts: Ember.inject.controller() });_
When you don’t specify the name of the controller, Ember uses the property name to look it up, as in:
posts: Ember.inject.controller(‘posts’).
You will only need to specify the controller name if the property name and the controller name are different.
_App.PostController = Ember.Controller.extend({ myPosts: Ember.inject.controller('posts') });_
This way, you can successfully update your project to comply with the new Ember guidelines.