Плагин для сборки ExtJS Grid - PullRequest
6 голосов
/ 11 января 2012

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

Ответы [ 3 ]

15 голосов
/ 11 января 2012

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

  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..

}); 

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

3 голосов
/ 11 января 2012

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

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

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

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

2 голосов
/ 28 марта 2013

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

...