构建ExtJS Grid的插件

时间:2012-01-11 06:56:07

标签: extjs extjs4

我想构建一个插件,它将在Ext.Grid上运行并允许对它进行一些操作(添加新行,在某些事件上更新它们等)我的插件应该扩展哪种类型的组件以获得最佳效果?

3 个答案:

答案 0 :(得分:15)

ExtJS Grid提供了两种添加功能的方法:

  1. 插件
  2. 功能
  3. 插件插件为组件提供自定义功能。 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..
    
    }); 
    

    这应该可以帮助您入门。

答案 1 :(得分:3)

如果您在src/grid/plugin/*中研究给定的插件,它们并不像Ext.form.field.*那样专门扩展任何基类。所以,imo,这必须与你需要实现的目标相关。

例如,RowEditingCellEditing都将Editing扩展为基类,以便能够编辑网格的商店,而HeaderReorderHeaderResizer只是扩展Ext.util.Observable以实现常见的事件处理。

如果在Ext中的任何给定类中没有实现任何功能,最好的办法是扩展Ext.util.Observable,所以至少你仍然可以启动一些事件。

插件只是添加到Grid对象的一组功能。如果我错了,请纠正我;)

答案 2 :(得分:2)

插件是可在组件间共享的可重用功能。所有EXTJS插件都应该继承Ext.AbstractPlugin类