Подтвердить что ты не робот

Замена Ext.reg() (xtype) в ExtJS4?

Я хочу использовать MultiSelect от 3.3 в Ext JS 4, как описано в этом предыдущем вопросе:

Почему файлы селектора элементов Ext JS multiselect не включены в загрузку Ext JS 3.3 и где они?

Кажется, что способ зарегистрировать xtypes изменился в Ext JS 4. Когда я пытаюсь импортировать этот виджет вместе с ItemSelector.js, я получаю сообщение об ошибке на Ext.reg().

Ext.reg('multiselect', Ext.ux.form.MultiSelect);

//backwards compat
Ext.ux.Multiselect = Ext.ux.form.MultiSelect;

Как изменить wdigets, чтобы заставить их работать в Ext JS 4?

4b9b3361

Ответ 1

Внешний способ JS 4 - использовать новую систему классов для создания вашего виджета: http://www.sencha.com/blog/countdown-to-ext-js-4-dynamic-loading-and-new-class-system/

Убедитесь, что ваш виджет присвоил псевдоним, используя пространство имен "widget". Например:

Ext.define('Ext.ux.form.MultiSelect', {
    extend: 'ClassNameYouAreExtending',
    alias: 'widget.multiselect'
});

Затем вы можете обратиться к виджету с помощью "multiselect" xtype. Когда вы используете xtype в Ext JS 4, он ищет класс с псевдонимом "widget. [Xtype]".

Ответ 2

Вам нужно будет изменить код, чтобы получить компонент MultiSelect, работающий на ExtJS 4. Вот несколько изменений, которые вам нужно будет сделать:

  • Определение класса. ExtJS 3.x используется Ext.extend для расширения. В новой версии вам придется использовать Ext.define

  • В новой версии вы можете представить имя класса как строку. Из-за этого, я думаю, вам больше не понадобится метод Ext.reg. Класс Component Manager не имеет функции регистрации.

Ответ 3

Ну, вы ныряете в зону предварительной беты, поэтому в какой-то степени вам придется смотреть на код и понимать его. В разделе сообщения в блоге есть некоторое объяснение новой системы классов, и там будет исчерпывающее руководство по миграции до того, как выйдет 4,0 финала. Я бы определенно преследовал это на форумах Sencha 4.0, но с тех пор, когда все эксперты Ext 4 будут болтаться.