1-я использовал следующий код для определения сетки многократного использования, но когда я делаю экземпляр, ни один конфиг в определении класса также не имеет эффекта взлома кода.В чем причина?
Я могу ответить, почему ваш конфиг не имеет эффекта.Потому что config
, который передается в cunstructor , не является вашей конфигурацией по умолчанию.Вы должны применить свою конфигурацию по умолчанию, чтобы конфигурация по умолчанию имела эффект:
constructor:function(config) {
config = Ext.applyIf(config, this.config);
this.callParent(arguments);
this.initConfig(config);
}
Однако я не знаю, почему dockedItems:[/* items */]
нарушает код.Может быть, у вас есть синтаксические или логические ошибки где-то внутри /* items */
.
2- Как я могу сделать некоторые столбцы по умолчанию в классе сетки и добавить еще несколько столбцов к его объектам?
Это легко.Просто переопределите вашу функцию initComponent:
Ext.define("IBS.users.Grid", {
extend: "Ext.grid.Panel",
// ...
initComponent : function(){
if (!this.columns) {
// default columns:
this.columns = [{
dataIndex: 'dkjgkjd',
// ...
}];
// if we passed extraColumns config
if (this.extraColumns)
for (var i=0; i < this.extraColumns.length; i++)
this.columns.push(this.extraColumns[i]);
}
this.callParent(arguments);
},
// ...
});
3- Есть ли какие-либо ограничения в объявлении конфигурации класса?
Я не знаю ни о каком.Однако я бы не рекомендовал объявлять object config в определении класса.Например:
Ext.define("IBS.users.Grid", {
extend: "Ext.grid.Panel",
bbar: Ext.create('Ext.toolbar.Toolbar', // ...
// ...
});
Все будет в порядке с первым экземпляром класса.Но когда вы создаете второй экземпляр, bbar ссылается на тот же объект, что и первый экземпляр.И поэтому bbar исчезнет из первой сетки.
Вместо этого объявите конфиги объекта в initComponent
.