Emberjs - 如何从另一个控制器访问一个控制器的方法'

时间:2013-03-07 06:42:39

标签: controller ember.js

在emberjs pre2 中,我们可以从另一个控制器访问控制器或控制器中的任何方法 以下方式:

App.get( '路由器')得到( 'navController')方法1();

有人可以建议什么是类似的emberjs rc1 代码?

由于

3 个答案:

答案 0 :(得分:17)

由于controllerFor已被弃用,我认为需要更正确的方式

this.get('controllers.nav').method1()

需要在控制器中声明需求

App.YourController = Ember.ObjectController.extend({
  needs: ['nav'],
  ....

答案 1 :(得分:3)

ControllerRoute内,您可以尝试

this.controllerFor("nav").method1()

注意

当问到这个问题时这是正确的答案,但由于controllerFor已被弃用,请通过joscas检查答案

答案 2 :(得分:2)

在Ember 2中,这可以通过注入您想要访问的控制器来实现:

export default Ember.Controller.extend({
  nav: Ember.inject.controller(),
});

或者,如果要指定与控制器名称不同的名称:

export default Ember.Controller.extend({
  navController: Ember.inject.controller('nav'),
});

然后,您可以访问注入的控制器的方法,如下所示:

this.get('navController').method1()