我在javascript文件中创建了自定义网格。我想在单独的js文件中将它作为xtype用于不同的面板。如果我在一个面板上使用它,它工作正常;但是当我使用它时,它同时在不同的面板上使用它,我在chrome开发人员工具控制台中遇到错误说:
Uncaught TypeError: Cannot read property 'isComponent' of undefined
我的网格定义如下:
Ext.define('DataBox.view.FootNotes', {
extend : 'Ext.grid.Panel',
alias : 'widget.footNotes',
initComponent : function() {
this.columns = [ {
header : 'SL',
field : {
xtype : 'checkbox',
checked : 'true'
}
}, {
header : 'Symbol',
}, {
header : 'Notes',
}, ];
this.callParent(arguments);
}
});
并在我使用以下代码
的面板上包含网格initComponent : function() {
/* this.footNotesInfoGrid = Ext.create('DataBox.view.FootNotes', {
colspan: 2,
border: false,
frame: 'false'
}); even tried this */
Ext.apply(this,{
items : [{
xtype : 'footNotes',
columnWidth : .50,
id : 'infoFootNotesGrid',
}]
}
}
我在不同的论坛讨论中尝试了许多其他方式..但我的问题仍然存在。 有人可以指出我哪里出错了吗?
答案 0 :(得分:0)
不要在配置中分配创建的对象!请使用initComponent
!
这一行
plugins : [ Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit : 1
}) ],
应该放在
this.plugins = [ Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit : 1
}) ];
initComponent
正文中的任何位置,但在调用callParent
之前
修改强>
仍允许覆盖执行
if(!this.plugins) {
this.plugins = [ Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit : 1
}) ];
}
修改的
避免使用静态id
属性!框架为您处理该部分。绕过Ext.ComponentQuery
代替你。它将帮助您找到您正在寻找的任何组件。