我想构建一个插件,它将在Ext.Grid上运行并允许对它进行一些操作(添加新行,在某些事件上更新它们等)我的插件应该扩展哪种类型的组件以获得最佳效果?
答案 0 :(得分:15)
ExtJS Grid提供了两种添加功能的方法:
插件插件为组件提供自定义功能。 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,这必须与你需要实现的目标相关。
例如,RowEditing
和CellEditing
都将Editing
扩展为基类,以便能够编辑网格的商店,而HeaderReorder
和HeaderResizer
只是扩展Ext.util.Observable
以实现常见的事件处理。
如果在Ext中的任何给定类中没有实现任何功能,最好的办法是扩展Ext.util.Observable
,所以至少你仍然可以启动一些事件。
插件只是添加到Grid对象的一组功能。如果我错了,请纠正我;)
答案 2 :(得分:2)
插件是可在组件间共享的可重用功能。所有EXTJS插件都应该继承Ext.AbstractPlugin类