为什么 extjs 中的网格面板处理程序正在执行而不被调用?
问题
您好,不方便的是,当我加载应用程序时,处理程序会自动执行,这是网格的代码:
Ext.define('masterDataGrid', {
extend : 'Ext.grid.Panel',
windowItems : null,
addWin : null,
initComponent : function() {
var me = this;
Ext.applyIf(me, {
tbar : [{
text : 'Add',
handler :me.onAdd,
scope : me
}, '-', {
text : 'Delete',
handler : me.onDelete,
scope : me
}, '-']
});
me.callParent(arguments);
},
getAddWindow : function() {
if (!this.addWin) {
this.addWin = new windowPop({
buttons : [{
text : 'i_OK',
handler : this.winOk()
}, {
text : 'i_Cancel',
handler : this.winCancel()
}]
});
this.addWin.add(this.windowItems);
}
return this.addWin;
},
onAdd : function() {
var addWindow = this.getAddWindow();
addWindow.show();
},
});
我正在从它扩展的另一个类中调用这个mastergrid,这是代码:
Ext.define('confEmailEmail', {
extend : 'masterDataGrid',
initComponent : function() {
var me = this;
me.columns = [{
id : 'code',
header : 'code',
dataIndex : 'code',
width : 220
}, {
header : 'description',
dataIndex : 'description',
width : 130
}, {
header : 'multiply',
dataIndex : 'multiply',
width : 70,
align : 'right'
}, {
header : 'cyrcletime',
dataIndex : 'cycletime',
width : 95
}];
me.windowItems = [{
xtype : 'combobox',
id : 'cb_input',
fieldLabel : 'i_Input',
margin : '5 0 0 5',
style : 'font-weight:bold',
labelWidth : 120
}, {
xtype : 'checkbox',
id : 'chk_invert',
fieldLabel : 'i_Invert',
margin : '5 0 0 5',
style : 'font-weight:bold',
labelWidth : 120
}, {
xtype : 'combobox',
id : 'cb_activeBy',
fieldLabel : 'i_Active by',
margin : '5 0 0 5',
style : 'font-weight:bold',
labelWidth : 120
}];
me.callParent(arguments);
}
});
当我单击添加按钮时,它应该打开窗口来添加新行,但每次执行整个应用程序时它都会显示。
感谢您的任何帮助。
Problem
Hello the inconvenient is that when I load my application the handler is automatically executing, this is the code of the grid:
Ext.define('masterDataGrid', {
extend : 'Ext.grid.Panel',
windowItems : null,
addWin : null,
initComponent : function() {
var me = this;
Ext.applyIf(me, {
tbar : [{
text : 'Add',
handler :me.onAdd,
scope : me
}, '-', {
text : 'Delete',
handler : me.onDelete,
scope : me
}, '-']
});
me.callParent(arguments);
},
getAddWindow : function() {
if (!this.addWin) {
this.addWin = new windowPop({
buttons : [{
text : 'i_OK',
handler : this.winOk()
}, {
text : 'i_Cancel',
handler : this.winCancel()
}]
});
this.addWin.add(this.windowItems);
}
return this.addWin;
},
onAdd : function() {
var addWindow = this.getAddWindow();
addWindow.show();
},
});
And I'm calling this mastergrid form another class that extends from it, this is the code:
Ext.define('confEmailEmail', {
extend : 'masterDataGrid',
initComponent : function() {
var me = this;
me.columns = [{
id : 'code',
header : 'code',
dataIndex : 'code',
width : 220
}, {
header : 'description',
dataIndex : 'description',
width : 130
}, {
header : 'multiply',
dataIndex : 'multiply',
width : 70,
align : 'right'
}, {
header : 'cyrcletime',
dataIndex : 'cycletime',
width : 95
}];
me.windowItems = [{
xtype : 'combobox',
id : 'cb_input',
fieldLabel : 'i_Input',
margin : '5 0 0 5',
style : 'font-weight:bold',
labelWidth : 120
}, {
xtype : 'checkbox',
id : 'chk_invert',
fieldLabel : 'i_Invert',
margin : '5 0 0 5',
style : 'font-weight:bold',
labelWidth : 120
}, {
xtype : 'combobox',
id : 'cb_activeBy',
fieldLabel : 'i_Active by',
margin : '5 0 0 5',
style : 'font-weight:bold',
labelWidth : 120
}];
me.callParent(arguments);
}
});
it supposed to open the window to add a new row when I click on the add button but it is showing every time I execute the whole application.
Thanks for any help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我明白了,这是因为onAdd是Ext.grid.Panel的一个方法,然后当它尝试加载应用程序时它访问我的方法onAdd,因为他认为我覆盖了Ext.grid.Panel的onAdd方法。
I got it, it is because onAdd is a method for Ext.grid.Panel, then when it is trying to load the application it access to my method onAdd because he thinks that I had overwrote the method onAdd of Ext.grid.Panel.