弃用:不推荐使用Controller#needs,请改用Ember.inject.controller()

时间:2015-07-24 03:04:59

标签: ember.js

刚刚将Ember更新为v1.13.5,并收到此警告:

  

弃用:不推荐使用Controller#需求,请改用Ember.inject.controller()

无法找到有关如何编写新语法的文档。有关如何解决此警告的任何建议将不胜感激。

2 个答案:

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