我刚刚意识到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
答案 0 :(得分:0)
这是编写令人困惑的代码的可靠方法。发明了替代类名称功能,以提供与以前的Ext版本的向后兼容性,其中类名对于某些组件是不同的。它不应该在应用程序代码中使用,除非您希望使应用程序更难维护。