2012-01-11 2 views
6

Я хотел бы создать плагин, который будет работать на Ext.Grid и разрешить некоторые операции над ним (добавление новых строк, обновление их на некоторых событиях и т. Д.). Какой тип компонента должен использовать мой плагин для достижения наилучших результатов?Плагин для построения сетки ExtJS

ответ

15

ExtJS сетки обеспечивает два способа добавления функциональности:

  1. Плагины
  2. Особенности

Плагины: Плагины обеспечивают пользовательские функции для компонента , ExtJS 4 представил эту систему, чтобы разработчики могли внедрять свои пользовательские функции в компонент. Он задается как объект или массив объекта, используя атрибут plugins класса сетки.

В принципе, плагин является классом ExtJS, который обычно не требует расширения любого класса ExtJS. Обязательной частью класса плагина является то, что он ДОЛЖЕН иметь метод init, который система плагина вызывает для инициализации плагина. Этот метод должен принимать параметр (который будет ссылкой на вашу сетку). Предполагается, что метод init должен настраивать все пользовательские события (если есть) или метод подключения, которые прослушивают события.

Вот пример код скелета:

Ext.define('Ext.ux.grid.MyPlugin', { 
    alias: 'plugin.ux.muplugin', 
    init: function(grid) { 
     // init events and add listeners... 
    }, 

    customFunction: function(par1, par2) { 

     // some code... 
    }, 

}); 

Особенность: Особенности является типом подключаемого модуля, который доступен только для сетчатой ​​панели. Базовый класс для функции - Ext.grid.feature.Feature. Вам необходимо расширить этот класс, если вы планируете создать функцию.

Вот пример:

Ext.define('Ext.grid.feature.MyFeature', {  
    extend: 'Ext.grid.feature.Feature', 

    alias: 'feature.myfeature', 

    // other methods.. 

}); 

Это должно помочь вам начать работу.

+0

спасибо. Это то, что мне нужно. –

+1

«Класс AbstractPlugin - это базовый класс, из которого должны наследоваться пользовательские плагины. Этот класс определяет основной API плагинов, используемый компонентами ...» - http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.AbstractPlugin – mwoodman

+1

Может ли кто-нибудь сказать мне, где можно создать файл плагина и как его включить в сетку? – Snowman

3

Если вы изучаете данные плагины в src/grid/plugin/*, они специально не расширяют базовый класс, как то, что делают Ext.form.field.*. Итак, imo, это должно быть связано с тем, что вам нужно достичь.

Например, как RowEditing и CellEditing расширяют Editing в качестве базового класса, чтобы иметь возможность редактировать магазин GRID, тогда как HeaderReorder и HeaderResizer просто расширяют Ext.util.Observable так, чтобы достичь обработок обычного явления.

Лучшая ставка заключается в продлении Ext.util.Observable, если ни одна из функций не была реализована в данных классах Ext, поэтому по крайней мере вы можете активировать некоторые события.

Плагины - это не что иное, как набор функций, добавленных в объект Grid. Поправьте меня, если я ошибаюсь;)

+1

В документах Sencha указано, что плагины, реализованные пользователем, должны наследовать от Ext.AbstractPlugin, на ответ @Asky. См. Http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.AbstractPlugin – mwoodman

2

плагины - это функции многократного использования, которые совместно используются компонентами. все плагины EXTJS должны наследовать класс Ext.AbstractPlugin

Смежные вопросы