Почему этот Ext.grid.Panel падает? - PullRequest
1 голос
/ 09 августа 2011

Это происходит сбой:

var grdMakes = Ext.extend(Ext.grid.Panel, {
  constructor: function(paConfig) {
  }
}

Это не происходит:

var grdMakes = Ext.extend(Ext.grid.Panel, {
}

Сбой:

Uncaught TypeError: Cannot read property 'added' of undefined

Почему добавление конструктора приводит к сбою?Я могу сделать это с другими объектами, такими как:

var pnlMakesMaint = Ext.extend(Ext.Panel, {
    constructor: function(paConfig) {
    }
}  // just fine

РЕДАКТИРОВАТЬ

Чтобы пояснить, что я хочу сделать, это то, что я хочу иметь возможность создания объекта свозможность переопределить значения по умолчанию.

var g = new grdMakes({});  // defaults used

var g = new grdMakes({renderTo: Ext.getBody()}); // renderTo overridden

Это работает для всего, кроме Ext.grid.Panel

Также я использую ExtJS 4

РЕШЕНИЕ

Оказывается, расширение устарело в ExtJS 4. Так что я использовал это, и оно работает:

Ext.define('grdMakes', {
     extend: 'Ext.grid.Panel',

     constructor: function(paConfig) {
        var paConfig = Ext.apply(paConfig || {}, {
           columns:   !paConfig.columns ? [{
              header: 'Makes',
              dataIndex: 'make'
           }, {
              header: 'Description',
              dataIndex: 'description'
           }]: paConfig.columns,
           height:     !paConfig.height ? 400 : paConfig.height,
           renderTo:   !paConfig.renderTo ? Ext.getBody() : paConfig.renderTo,
           store:      !paConfig.store ? stoMakes : paConfig.store,
           title:      !paConfig.title ? 'Makes' : paConfig.title,
           width:      !paConfig.width ? 600 : paConfig.width

        });

        grdMakes.superclass.constructor.call(this, paConfig);
     }
}

1 Ответ

2 голосов
/ 09 августа 2011

Ok. Но ваш код выглядит как ExtJS3. Потому что Ext.extend устарел в версии ExtJS4. Вместо расширения вы можете использовать define. Для справки вы можете проверить следующий URL:

http://docs.sencha.com/ext-js/4-0/#/api/Ext-method-extend

Afaik, для переопределения параметров по умолчанию это не идеальный способ. Вам необходимо использовать Ext.override.

Например:

Ext.override(Ext.grid.Panel,{
   lockable : true
});

Как и выше, вы должны переопределитьпараметры по умолчанию.

...