Emberjs - 如何从另一个控制器”

问题描述:

在emberjs PRE2我们可以在 在控制器访问控制或任何方法从另一个控制器方式如下:Emberjs - 如何从另一个控制器”

App.get('访问一个控制器的方法路由器)获得( 'navController')方法1();

任何人都可以建议什么可能是类似的代码为emberjs rc1

感谢

+0

我一直努力遵循数据将行动向下推进范式。你如何做类似的事情是使用建议的依赖注入@Def_Os,但是在应用程序路由上执行。 – 2016-03-21 07:01:01

里面一个ControllerRoute你可以尝试

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

注意

这是当有人问正确的答案,但因为controllerFor已过时,请检查joscas

+0

在这种情况下,您可以通过点击左侧的刻度标记来接受答案 – 2013-03-07 07:42:47

+0

有什么方法可以从视图调用控制器方法? – 2013-03-08 17:37:14

+5

其实controllerFor已弃用....所以我们应该使用需要 – 2013-03-08 18:12:20

由于controllerFor已过时,我认为一个更正确的方法是用需求

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

它需要声明你需求在你的控制器:

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

这应该是新接受的答案。 – DelphiLynx 2014-02-04 14:35:50

+0

文档:http://emberjs.com/guides/controllers/dependencies-between-controllers/ – givanse 2014-05-09 05:04:35

在余烬2,此作品通过注入您想要访问的控制器:

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

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

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

然后,您可以像这样访问注入控制器的方法:

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

我一直在试图按照数据下来的行动范式。你如何做类似的事情是使用建议的依赖注入@Def_Os,但是在应用程序路由上执行。 然后,不要直接调用该方法,只需发送该操作并让它冒泡到应用程序路由。这避免了在大型项目中难以管理的2个控制器之间复杂的直接相关性。 – 2016-03-21 07:02:27