Emberjs - 如何从另一个控制器”
在emberjs PRE2我们可以在 在控制器访问控制或任何方法从另一个控制器方式如下:Emberjs - 如何从另一个控制器”
App.get('访问一个控制器的方法路由器)获得( 'navController')方法1();
任何人都可以建议什么可能是类似的代码为emberjs rc1?
感谢
里面一个Controller
或Route
你可以尝试
this.controllerFor("nav").method1()
注意
这是当有人问正确的答案,但因为controllerFor
已过时,请检查joscas
在这种情况下,您可以通过点击左侧的刻度标记来接受答案 – 2013-03-07 07:42:47
有什么方法可以从视图调用控制器方法? – 2013-03-08 17:37:14
其实controllerFor已弃用....所以我们应该使用需要 – 2013-03-08 18:12:20
由于controllerFor
已过时,我认为一个更正确的方法是用需求:
this.get('controllers.nav').method1()
它需要声明你需求在你的控制器:
App.YourController = Ember.ObjectController.extend({
needs: ['nav'],
....
这应该是新接受的答案。 – DelphiLynx 2014-02-04 14:35:50
文档: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()
我一直在试图按照数据下来的行动范式。你如何做类似的事情是使用建议的依赖注入@Def_Os,但是在应用程序路由上执行。 然后,不要直接调用该方法,只需发送该操作并让它冒泡到应用程序路由。这避免了在大型项目中难以管理的2个控制器之间复杂的直接相关性。 – 2016-03-21 07:02:27
我一直努力遵循数据将行动向下推进范式。你如何做类似的事情是使用建议的依赖注入@Def_Os,但是在应用程序路由上执行。 – 2016-03-21 07:01:01