2015-05-03 2 views
2

Я нахожу его очень трудно использовать «Ext.ux.TabReorderer» в качестве плагина в закладке панелиКак использовать плагин в ExtJS

Ext.define("practical.view.Board",{ 
    extend: 'Ext.tab.Panel', 
    alias: 'widget.board', 
    plugins: ['Ext.ux.TabReorderer'], 
    items:[{ 
     title: 'Tab 1' 
    },{ 
     title: 'Tab 2' 
    }] 
}); 

Это бросает ошибку консоли, говоря:

Cannot read property 'init' of null

В ходе дальнейшего исследования выяснилось, что в моих extjs нет папки под названием «ux». Также быстрый поиск показал мне, что в папке «extjs \ docs \ output» есть файл с именем «Ext.ux.TabReorderer.js».

Это меня смущает, как добавить этот плагин на панель вкладок?

Edit:

После прохождения ссылки в комментариях по DSF

Я добавил Путь в app.js

Ext.Loader.setConfig({ 
    enabled: true, 
    paths: { 
     'Ext.ux': './app/ux' 
    } 
}); 

также изменил вкладку панель, чтобы включить

Ext.require(['Ext.ux.TabReorderer']); 
Ext.define("practical.view.Board",{... 
... 

В настоящее время givi ng me новые ошибки:

1) Uncaught TypeError: Ext.data.JsonP.Ext_ux_TabReorderer is not a function (TabReorderer.js)

2) Uncaught Error: The following classes are not declared even if their files have been loaded: 'Ext.ux.TabReorderer'. Please check the source code of their corresponding files for possible typos: './app/ux/TabReorderer.js (ext-all-dev.js)

+0

Посмотрите на это: https://www.sencha.com/forum/showthread.php?211867-Using-TabReorderer-as-a-plugin – DSF

+0

Do какое сообщение об ошибке: Проверьте, нет ли синтаксических ошибок в файле плагина. Обратите особое внимание на правильное имя класса плагина. – Saki

ответ

4

Я, наконец, смог исправить это.

Я переместил TabReorderer.js из extjs\docs\output в папку extjs\src\ux.

Причина, по которой это не срабатывало раньше, состояло в том, что я предоставлял имя класса внутри массива плагинов.

plugins: ['Ext.ux.TabReorderer'] 

Где он должен был экземпляр этого класса, как показано ниже

plugins: [Ext.create('Ext.ux.TabReorderer')] 

Другой способ добавления плагинов будет использовать PTYPE. Например

plugins: [{ptype: 'cellediting'}] 

можно найти список всех ptypes в Sencha docs

К сожалению, нет PTYPE для TabReorderer, поэтому пришлось придерживаться Ext.create().

Для дальнейшего чтения

http://www.sencha.com/blog/using-plugins-and-mixins-in-your-sencha-apps/

+0

Невозможно добавить еще одну ссылку ниже следующего чтения, поскольку Stackoverflow требует, чтобы пользователи имели более 10 повторений для размещения более двух ссылок в ответе. Поэтому я вставляю ссылку в комментариях, я добавлю больше, если найду более интересные вещи. http://docs-origin.sencha.com/extjs/4.2.3/#!/api/Ext.panel.Panel-cfg-plugins –

+0

Это было нарушено для меня в 4.2.1, но работало в 4.2.5, поэтому я скопировал исходный код BoxReorder и TabReorder в свое приложение, и это сработало. – majorBummer