从另一个控制器调用控制器的功能/在控制器之间共享数据

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) 中调用它。

【讨论】:

以上是关于从另一个控制器调用控制器的功能/在控制器之间共享数据的主要内容,如果未能解决你的问题,请参考以下文章

ExtJs 4 从另一个控制器同步调用函数

如何在多个视图控制器之间全局共享数据

从另一个控制器调用一个控制器的视图

Codeigniter:从另一个控制器调用一个控制器的方法

目标-c:从另一个控制器调用 void 函数

iPhone - 从另一个视图控制器调用函数