来自模态视图的ExtJS调用方法
我有一个表单中的方法,它创建一个显示一个带有表单的模态来自模态视图的ExtJS调用方法,extjs,Extjs,我有一个表单中的方法,它创建一个显示一个带有表单的模态 onButtonClickSave: function(button, e, eOpts) { //Create modal form var confirm = new Ext.Window({ xtype: 'form', hidden: true, itemId: 'FrmModalConfirma', layout: 'auto', bodyPadding:
onButtonClickSave: function(button, e, eOpts) {
//Create modal form
var confirm = new Ext.Window({
xtype: 'form',
hidden: true,
itemId: 'FrmModalConfirma',
layout: 'auto',
bodyPadding: 10,
items: [
{
xtype: 'displayfield',
fieldLabel: 'Are you sure?',
labelWidth: 500
},
{
xtype: 'combobox',
width: 500,
fieldLabel: 'Reason',
labelWidth: 150,
store: [
[
'2',
'Death'
],
[
'3',
'Birth'
],
[
'4',
'Job'
],
[
'5',
'Debt'
]
]
},
{
xtype: 'container',
layout: 'column',
items: [
{
xtype: 'button',
text: 'Yes',
listeners: {
click: 'onButtonClickCalculate'
}
},
{
xtype: 'tbspacer',
width: 30
},
{
xtype: 'button',
text: 'No, cancel'
}
]
}
]
});
//Show modal form
confirm.show();
}
但是,当我单击应该执行此代码的按钮时:
onButtonClickCalculate: function(button, e, eOpts) {
Ext.Msg.alert('Yes', 'It works');
}
我在浏览器上遇到此错误:Ext.util.Event.getFireInfo():sbs.view.admin.PrincipalViewController上没有名为“onButtonClickGuardaRecalcula”的方法,但所有这些都是在名为admin.StudentViewController的面板中创建的。我的第一个猜测是,这是因为模态是使用新的Ext.Window创建的,但是我在ExtJS方面缺乏经验,所以我完全不知道这个问题。有什么想法吗?有两件事。当您尝试
this.getView()
时,您得到的函数找不到,因为您在窗口的范围内,而不是视图中…这有意义吗:)
好的,这是你可以尝试的。在您的var confirm=new Ext.Window
之前,将此
var that = this;
然后在处理程序中添加属性
scope: that,
handler: function() {
this.getView().....
}
类似于此。似乎您的函数onButtonClickCalculate超出了范围。因此它找不到它。尝试直接放置该函数,让我们看看会发生什么。直接放置该函数是什么意思?不要放置click:'onButtonClickCalculate'放置类似这样的内容click:function(){alert('eeee');}谢谢,它现在确实执行了该方法,但是,我尝试在该方法内部运行它:this.getView().down(“#frmadminingresoss”).getForm();它说getView不是一个函数。我怎样才能调用模态的父级上的表单?Yuo应该把它作为一个答案,这样我就可以向上投票并选择它,如果它工作的话。谢谢你,正如你在对我的问题的评论中所说的,最好在模态中创建整个函数,而不是试图从另一个范围调用它我遇到的另一个错误是使用var form=Ext.ComponentQuery.query(“#FormName”)[0];而不是这个.getView()解决的