控制器中的备用类名

时间:2013-09-17 07:48:21

标签: javascript extjs extjs4 extjs-mvc extjs4.2

我刚刚意识到ExtJS 4.2.1中控制器的备用类名不能按我预期的方式工作:

Ext.define('AppName.controller.subnamespace.Controller1', {
    extend: 'Ext.app.Controller',
    alternateClassName: 'AppName.Ctrl1',
    // ...
});

使用应用程序(或任何控制器)的getController方法访问控制器适用于两个名称(长文件和备用文件),但返回控制器的2个不同实例:

var ctrlInstance1 = AppName.app.getController('AppName.controller.subnamespace.Controller1'),
    ctrlInstance2 = AppName.app.getController('AppName.Ctrl1');

console.log(ctrlInstance1 === ctrlInstance2); // --> false

这是预期的行为还是错误?如果它是一个错误我将提交错误报告...

感谢

Ps。:我也在官方的sencha论坛上问了这个问题,但到目前为止没有得到任何答复:http://www.sencha.com/forum/showthread.php?271970-Alternate-class-name-in-controller

1 个答案:

答案 0 :(得分:0)

这是编写令人困惑的代码的可靠方法。发明了替代类名称功能,以提供与以前的Ext版本的向后兼容性,其中类名对于某些组件是不同的。它不应该在应用程序代码中使用,除非您希望使应用程序更难维护。