从另一个控制器调用控制器的功能/在控制器之间共享数据
Posted
技术标签:
【中文标题】从另一个控制器调用控制器的功能/在控制器之间共享数据【英文标题】:Call controller's function from another controller / Share data between controllers 【发布时间】:2012-05-19 23:38:25 【问题描述】:目前,当我在一个控制器中并且我想从另一个控制器调用一个函数时,我会这样做:
App.app.getControllerInstances()['App.controller.OtherController'].do_something();
这对我来说似乎有点沉重,还有其他(更好的)方法吗?
谢谢
【问题讨论】:
【参考方案1】:我会使用 getController 方法:http://docs.sencha.com/touch/2-0/#!/api/Ext.app.Application-method-getController
例如:this.getApplication().getController('ControllerName').doSomething();
【讨论】:
【参考方案2】:如果你不在控制器的上下文中(例如在某个对象的回调函数中),你可以这样做。
MyAppName.app.getController('ControllerName').doSomething();
【讨论】:
【参考方案3】:在 Sencha Touch 2 中使用 MVC 约定时,当尝试从 'ControllerA' 内部调用 'ControllerB' 中名为 'SomeMethodInB' 的方法时,我建议如下:
MyAppName.app.getController('ControllerB').
'MyAppName' 是您在核心应用定义中定义的应用的名称 - 通常在您的 app.js 文件中。
根据 Sencha 论坛,以下是贬值:
this.getApplication().getController('ControllerB').SomeMethodInB();
http://www.sencha.com/forum/showthread.php?158996
事实上,我可以调用“this.getApplication()”方法的唯一方法是从我的应用程序定义文件 (app.js) 中调用它。
【讨论】:
以上是关于从另一个控制器调用控制器的功能/在控制器之间共享数据的主要内容,如果未能解决你的问题,请参考以下文章