Extjs4 и функции привязки к событиям в GridPanel - PullRequest
0 голосов
/ 07 июня 2011

Я новичок в библиотеке Extjs и не могу понять, как добавить слушателя к некоторым событиям в GridPanel. Поскольку я заполняю сетку асинхронно, я хочу, чтобы моя функция выполнялась, когда мы добавляем новый элемент на панель сетки.

Я нашел (я думаю) правильное событие:

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

но я не могу найти правильное место для размещения слушателя, так как эта функция выполняется только один раз при загрузке страницы:

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");
          }
        }
      },
 ....

Проблема в том, что существуют разные способы добавления прослушивателей (внутри и снаружи хэша viewConfig, определения компонентов внутри и снаружи и т. Д.), И я не могу найти тот, который работает в этом случае. Что еще более расстраивает, так это то, что в Интернете есть много мест с документацией для версии 3 или даже без указания версии.

1 Ответ

4 голосов
/ 26 июня 2011

Вы должны прослушать событие add Store:

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