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

vic*_*gtw 10 ember.js

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

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

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

Pat*_*ssa 17

由于某种原因,它被标记为文档中的私有方法,为了看到它,您需要勾选私有复选框.

有两种方法可以使用它,有或没有传递控制器名称

App.PostController = Ember.Controller.extend({
  posts: Ember.inject.controller()
});
Run Code Online (Sandbox Code Playgroud)

当未传递控制器的名称时,ember使用属性名称来查找它,例如posts: Ember.inject.controller('posts').

当属性和控制器具有不同的名称时,您将只指定控制器名称.

App.PostController = Ember.Controller.extend({
  myPosts: Ember.inject.controller('posts')
});
Run Code Online (Sandbox Code Playgroud)

  • 我提交的[PR](https://github.com/emberjs/ember.js/pull/11883)应该在维护者获得机会时合并^^ (3认同)

Tor*_*ups 6

这是一个简单的例子,这篇博文更多地讨论了从手动注入到"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');
    }
  }
}
});
Run Code Online (Sandbox Code Playgroud)