在我的应用程序中,我们有一个返回面板、下一个按钮,这些按钮包含在每个屏幕中用于导航。从下一个按钮,我想使用以下方法调用控制器:
myApp.app.getController('folder.MyInfoController').submitMyInfoForm(nextButtonId);
Run Code Online (Sandbox Code Playgroud)
但是,我得到一个 TypeError: controller.doInit is not a function。我的控制器中有一个已经在工作的 init 方法。
你只是得到这个错误,因为“folder.MyInfoController”是不是一个控制器-也就是说,它不会扩展Ext.app.Controller其Ext.app.Application::getController期待找到。现在获得一些奖励积分...
我的心理感觉告诉我,您很可能正在尝试找到一个视图控制器 - 这与应用程序控制器明显不同。它们都共享一个基类,但服务于不同的目的,最终有不同的实现。这在 API 中有很好的定义。
作为下一段的前言,我还要指出您正在做的事情看起来像是一种反模式。使用视图控制器的最大优点是它们为您提供了 MVC 的所有便利,同时使您的组件彼此解耦 - 只有在特定情况下,您可以证明在组件范围之外访问一个是合理的,我想不通您需要从全局上下文访问一个的任何充分理由。
也就是说,您可以通过获取对实例化组件的引用(类型为“folder.MyInfo” - 或您所称的任何内容)并请求它为 view-controller 来找到视图控制器。请注意,组件与其视图控制器之间存在1:1 的关系——前者的每个实例都有后者的唯一实例。
| 归档时间: |
|
| 查看次数: |
2508 次 |
| 最近记录: |