刚刚将Ember更新为v1.13.5,并收到此警告:
弃用:不推荐使用Controller#需求,请改用Ember.inject.controller()
无法找到有关如何编写新语法的文档。有关如何解决此警告的任何建议将不胜感激。
答案 0 :(得分:16)
出于某种原因,它在docs中被标记为私有方法,为了看到它,您需要勾选私人复选框。
有两种方法可以使用它,有或没有传递控制器名称
App.PostController = Ember.Controller.extend({
posts: Ember.inject.controller()
});
当未传递控制器的名称时,ember使用属性名称来查找它,例如posts: Ember.inject.controller('posts')
。
当属性和控制器具有不同的名称时,您将只指定控制器名称。
App.PostController = Ember.Controller.extend({
myPosts: Ember.inject.controller('posts')
});
答案 1 :(得分:6)
这是一个简单的例子,this blog post更多地讨论了从手动注入到“Ember.inject”的演变
export default Ember.Controller.extend({
flashManager: Ember.inject.controller('flash-message'),
actions: {
upVote: function() {
// Do some voting
var flashManager = this.get('flashManager');
flashManager.pushMessage('error', 'Your vote does not count');
}
}
}
});