2013-09-17 3 views
0

Я просто понял, что альтернативные имена классов для контроллеров в 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 .: Я также задал этот вопрос в официальных форумах Сенча, но не получил никакого ответ до сих пор: http://www.sencha.com/forum/showthread.php?271970-Alternate-class-name-in-controller

ответ

0

Это верный способ написать путаный код. Альтернативная функция имен классов была изобретена для обеспечения обратной совместимости с предыдущими версиями Ext, где имена классов были разными для определенных компонентов. Он не должен использоваться в коде приложения, если вы не хотите, чтобы ваше приложение было сложнее поддерживать.

+0

Я полностью понимаю, о чем вы говорите, и все еще считаете, что существуют определенные ситуации, когда эти альтернативные имена классов являются отличным инструментом, если они используются тщательно и последовательно и могут действительно улучшить читаемость кода таким образом, который оправдывает негативное влияние, которое он оказывает на условия ремонтопригодности. – suamikim

+0

Можете ли вы дать мне прецедент? Пока я не вижу, как эта функция может быть полезна для контроллеров. –

+0

Я не могу в разделе комментариев здесь, потому что он занимает чуть больше 550 символов, но на самом деле я уже разместил его на форуме Sencha: http://www.sencha.com/forum/showthread.php?271970 -Alternate-class-name-in-controller & p = 997150 & viewfull = 1 # post997150 – suamikim