2012-01-11 10 views
6

Mi piacerebbe creare un plugin che funzioni su Ext.Grid e consentire alcune operazioni su di esso (aggiungendo nuove righe, aggiornandole su alcuni eventi, ecc.) Che tipo di componente dovrebbe estendere il mio plug-in per ottenere i migliori risultati?Edificio plug-in per ExtJS Grid

risposta

15

ExtJS griglia fornisce due modi di funzionalità aggiungendo:

  1. Plugin
  2. Caratteristiche

Plugin: Plugin forniscono funzionalità personalizzato per il componente . ExtJS 4 ha introdotto questo sistema in modo che gli sviluppatori possano iniettare le loro funzionalità personalizzate sul componente. Viene specificato come oggetto o array di oggetti utilizzando l'attributo plugins della classe grid.

In sostanza, un plug-in è una classe ExtJS che in genere non è necessario estendere alcuna classe ExtJS. La parte obbligatoria della classe plugin è che, DOVREBBE avere un metodo init che il sistema di plugin chiama per inizializzare il plugin. Questo metodo dovrebbe prendere un parametro (che sarà un riferimento alla tua griglia). Il metodo init dovrebbe configurare tutti gli eventi personalizzati (se presenti) o il metodo di collegamento che ascolta gli eventi.

Ecco un esempio di codice scheletro:

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

    customFunction: function(par1, par2) { 

     // some code... 
    }, 

}); 

Caratteristiche: Feature è un tipo di plugin che è disponibile solo per il pannello grigliato. La classe base per una funzionalità è Ext.grid.feature.Feature. È necessario estendere questo corso se si intende creare una funzione.

Ecco un esempio:

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

    alias: 'feature.myfeature', 

    // other methods.. 

}); 

Questo dovrebbe aiutare a iniziare.

+0

grazie. Questo è quello di cui avevo bisogno. –

+1

"La classe AbstractPlugin è la classe base da cui i plugin implementati dall'utente devono ereditare. Questa classe definisce l'API essenziale dei plug-in utilizzati dai componenti ..." - http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.AbstractPlugin – mwoodman

+1

Qualcuno può dirmi dove effettivamente creare il file del plugin e come inserirlo nella griglia? – Snowman

3

Se si studiano i plug-in forniti in src/grid/plugin/*, non estendono in modo specifico alcuna classe di base come fa Ext.form.field.* do. Quindi, imo, questo deve essere correlato a ciò che è necessario raggiungere.

Ad esempio, sia RowEditing e CellEditing estende Editing come loro classe di base per avere la possibilità di modificare deposito della griglia, che HeaderReorder e HeaderResizer estende solo Ext.util.Observable modo da ottenere la movimentazione evento comune.

La migliore scommessa è di estendere Ext.util.Observable se nessuna delle funzionalità è stata implementata in una determinata classe in Ext, quindi almeno è ancora possibile attivare alcuni eventi.

I plug-in non sono altro che un insieme di funzioni aggiunte a un oggetto Grid. Correggetemi se sbaglio;)

+1

I documenti di Sencha indicano che i plugin implementati dall'utente dovrebbero ereditare da Ext.AbstractPlugin, per la risposta di @Asky. Vedi http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.AbstractPlugin – mwoodman

2
I plug-in

sono funzionalità riutilizzabili condivise tra i componenti. tutti i plugin EXTJS devono ereditare la classe Ext.AbstractPlugin