Controller.doInit不是一个函数?

时间:2015-11-06 15:30:00

标签: javascript extjs

在我的应用程序中,我们有一个后面板,下一个按钮面板,每个屏幕都包含在导航中。从下一个按钮开始,我想使用以下方法调用Controller:

 myApp.app.getController('folder.MyInfoController').submitMyInfoForm(nextButtonId);

但是,我得到一个TypeError:controller.doInit不是一个函数。我的控制器中有一个init方法,它已经可以工作了。

1 个答案:

答案 0 :(得分:2)

您收到此错误只是因为" folder.MyInfoController" 一个控制器 - 也就是说,它不会扩展{{ 1}} Ext.app.Controller期待找到的。现在有一些奖励点......

我的通灵感觉告诉我,你很可能正在寻找一个视图控制器 - 这与应用程序控制器显然不同。它们共享一个基类但服务于不同的目的,并最终具有不同的实现。这在API中有明确定义。

作为下一段的序言,我还指出你所做的事情看起来像一个反模式。使用视图控制器的最大优点是它们为您提供了MVC的所有便利,同时保持您的组件彼此分离 - 只有特定的情况,您可以证明访问组件范围之外的一个,我可以'想想你为什么需要从全球范围内访问一个。

也就是说,您可以通过获取对实例化组件的引用来找到视图控制器(类型为" folder.MyInfo" - 或者您调用的任何内容它)和asking it for it's view-controller。请注意,组件与其视图控制器之间存在 1:1 关系 - 前者的每个实例都具有后者的唯一实例。