Extjs4.2中Controller重复init,init2次引起点击事件弹出两个窗口的问题

时间:2022-04-17 18:06:10

项目使用的Extjs4.2,最近打算修改成动态加载controller的模式,结果出了这么一个问题查找了好久才找到解决方法。

首先描述下问题:

动态加载controller的模式实现如下:

MyApp.getController(menu.MenuCtrl);//里面是我的controller名称

这是修改后的,修改前的如下:

MyApp.getController(menu.MenuCtrl).init();//后面还有一个init()


其他版本是否如此,lz不清楚,所以这里仅供参考。


这种情况我只发现出现于Extjs4.2中,其他版本不清楚,附Extjs4.2 getController() 方法:

    getController: function(name) {
var me = this,
controllers = me.controllers,
className, controller;

controller = controllers.get(name);

if (!controller) {
className = me.getModuleClassName(name, 'controller');

controller = Ext.create(className, {
application: me,
id: name
});

controllers.add(controller);
<span style="white-space:pre"></span> //此处init过了
if (me._initialized) {
controller.doInit(me);
}
}

return controller;
},