2011-06-07 3 views
0

Je suis nouveau dans la bibliothèque Extjs et je n'arrive pas à comprendre comment ajouter un écouteur à certains événements dans GridPanel. Comme je remplis la grille de manière asynchrone, je veux que ma fonction soit exécutée lorsque nous ajoutons un nouvel élément au panneau de la grille.Extjs4 et fonctions de liaison aux événements dans GridPanel

Je trouve (je pense) événement correct:

added(Ext.Component this, Ext.container.Container container, Number pos) 

mais je ne peux pas trouver un bon endroit pour mettre l'auditeur que cette fonction est exécutée une seule fois sur la charge de la page:

Ext.define('MyApp.NewsGrid', { 
    extend: 'Ext.grid.GridPanel', 
    alias: 'widget.newsgrid', 
    initComponent: function() { 
    Ext.apply(this, { 
     title: 'News', 
     store: newsStore, 
     viewConfig: { 
     plugins: [{ 
      pluginId: 'preview', 
      ptype: 'preview', 
      bodyField: 'testo', 
      expanded: false 
     }], 
     listeners: { 
      add: function() { 
      alert("add executed"); 
      }, 
      added: function() { 
      alert("added executed"); 
      } 
     } 
     }, 
.... 

Le problème est qu'il y a différentes façons d'ajouter des écouteurs (à l'intérieur et à l'extérieur du hachage viewConfig, à l'intérieur et à l'extérieur de la définition du composant etc ...) et je ne peux pas en trouver une qui marche dans ce cas. Ce qui le rend encore plus frustrant, c'est qu'il existe de nombreux endroits sur Internet avec de la documentation pour la version 3 ou même sans spécifier la version.

+0

quels sont les éléments que vous ajoutez ou voulez-vous dire que vous voulez écouter lorsque de nouveaux enregistrements sont ajoutés au magasin sous-jacent? –

+0

comme @amol a dit, .. si oui, essayez de mettre ajouter des écouteurs dans votre magasin .. pas dans la grille –

Répondre

4

Vous devriez écouter l'événement add de magasin:

initComponent: function() { 
    // somewhere inside initComponent... 
    this.getStore().on("add", function(store, records) { 
     alert(records.length + " records added"); 
    }, this); 
} 
Questions connexes