2012-01-11 19 views
6

Ext.Gridで動作し、いくつかの操作を許可するプラグインを作成したい(新しい行の追加、いくつかのイベントでの更新など)プラグインを拡張する必要があるコンポーネントのタイプ最高の結果を達成するために?ExtJS Gridのビルドプラグ

答えて

15

ExtJSのグリッド機能を追加する2つの方法が用意されています

  1. プラグイン
  2. 特長

プラグイン:プラグインコンポーネントのカスタム機能を提供。 ExtJS 4では、このシステムが導入され、開発者はカスタム機能をコンポーネントに注入できます。グリッドクラスのplugins属性を使用して、オブジェクトまたはオブジェクトの配列として指定されます。

基本的に、プラグインは通常、ExtJSクラスを拡張する必要のないExtJSクラスです。プラグインクラスの必須部分は、プラグインシステムがプラグインを初期化するために呼び出すinitメソッドを持つべきであるということです。このメソッドはパラメータ(グリッドへの参照になります)を取る必要があります。 initメソッドは、すべてのカスタムイベント(存在する場合)を設定するか、イベントをlistenするメソッドをフックアップすることになっています。ここ

サンプルスケルトンコードである:

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クラスは、ユーザーが実装したプラグインが継承する基本クラスです。このクラスは、Componentsによって使用されるプラグインの必須APIを定義します。" - http://docs.sencha.com/extjs/4.2.1 /#!/api/Ext.AbstractPlugin – mwoodman

+1

プラグインファイルを実際に作成する場所と、それをグリッドに含める方法を教えてもらえますか? – Snowman

3

src/grid/plugin/*に特定のプラグインを調べても、Ext.form.field.*のような基本クラスは特に拡張されません。ですから、これはあなたが達成する必要のあるものと関連している必要があります。例えば

HeaderReorderHeaderResizerだけで、共通のイベント処理を実現するようExt.util.Observableを拡張する一方で、RowEditingCellEditingの両方が、グリッドのストアを編集する能力を持っている彼らの基本クラスとしてEditingを拡張します。

Extの任意のクラスで実装されていない機能がない場合は、Ext.util.Observableを拡張することをおすすめします。そのため、少なくともいくつかのイベントを起動することができます。

プラグインは、Gridオブジェクトに追加された機能のセットです。私が間違っているなら、私を修正してください。)

+1

Senchaのドキュメントには、@Askyの回答ごとにExt.AbstractPluginから継承する必要があります。感謝します。http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.AbstractPlugin – mwoodman

2

プラグインは、コンポーネント間で共有される再利用可能な機能です。すべてのEXTJSプラグインは、クラスExt.AbstractPluginを継承する必要があります。