Ошибка при обновлении с ExtJs3 на ExtJS4 — «members определено udf» в режиме совместимости?

#version #upgrade #extjs #extjs4

#версия #Обновление #extjs #extjs4

Вопрос:

Я обновляю свой проект с Ext3.3 на Ext4.
Я добавил файлы ext3-core-compat.js и ext3-compat.js после добавления нового файла ext4 ext-all-debug.js .

Я получаю members is udefined error в строке 3262 ext-all-debug.js.
Который находится внутри метода Ext.extend, который принимает 3 параметра:

 Ext.extend = function(subclass, superclass, members) 
  

из документации ExtJS4 я вижу, что Ext.extend устарел, однако я просто хочу, чтобы мой код заработал, прежде чем я изменю весь свой Ext.extend на Ext.define .

Есть кто-нибудь, кто может помочь?

Ответ №1:

Я предполагаю, что вы используете синтаксис анонимного конструктора, подобный этому?

 MyClass = function(config) {
    ...
}
Ext.extend(MyClass, SomeOtherClass, {
    ...
});
  

Если это так, эта форма не может быть обнаружена Ext4 или уровнем compat и должна быть обновлена вручную до нового стандартного Ext.define синтаксиса. Я не уверен, упоминается ли это в настоящее время в документации по миграции, и если нет, я добавлю это.

Комментарии:

1. Спасибо, Брайан. Это именно то, что я делаю.

Ответ №2:

Предполагая, что вы выполнили шаги в руководстве по миграции ExtJS 3-4, я не думаю, что можно сделать что-то еще, кроме как вручную просмотреть ваше приложение и внести изменения. Согласно сообщению в блоге Sencha о миграции (выделено мной):

Уровень совместимости Ext JS 3

Это состоит из набора файлов, которые при включении после Ext JS 4 предоставляют переопределения, которые будут загружать существующий код Ext JS 3 для запуска под Ext JS 4. Цель этого уровня не в том, чтобы позволить вашему приложению запускаться без изменений в Ext JS 4 в долгосрочной перспективе. Напротив, вы должны ожидать использования этого уровня только как временного средства полной миграции на Ext JS 4. Цель предоставления этого — помочь сделать переход максимально быстрым и безболезненным. Вместо того, чтобы отлаживать непонятные ошибки на пустом экране, вы сможете намного быстрее вернуть свое приложение в отрисованное и функциональное состояние, используя уровень совместимости, что значительно упрощает переход на последнюю архитектуру.