EXTJS鼠标点击后不工作加载多时间
问题描述:
页我有我的面板上的网格,命名gridView
和gridView
是在一个名为panelMain
面板,通过dbclick
监听器网格行,我从做这样的事情加载:EXTJS鼠标点击后不工作加载多时间
listeners:{
itemdblclick: function(dataview, index, item, e) {
/* I did not create new studentForm every time.*/
var editStudent = Ext.getCmp('editStudent');
if(editStudent == undefined)
editStudent = Ext.create('H.view.EditStudent');
editStudent.getForm().load({
url: 'studentDetails.php',
params: {studentId: studentId},
method:'GET',
success: function (form, action) {
var panelMain = Ext.getCmp('panelMain');
panelMain.items.clear();
panelMain.add(editStudent);
panelMain.update();
panelMain.doLayout();
},
failure: function (form, action) {
/// do nothing
}
});
}
后,我编辑的学生,我应该回来电网的页面,所以我做这样的事情:
var panelMain = Ext.getCmp('panelMain');
var gridView = Ext.getCmp('gridView');
panelMain.items.clear();
panelMain.add(gridView);
panelMain.update();
panelMain.doLayout();
问题是,当我回来的网格,它不火任何itemdbclick
事件(这就像网格只是页面中的图像,没有事件触发)。
有时当我去编辑studentForm
并返回网格工作,但是当我再次去学生表单时,学生页面不会触发任何事件,当我点击编辑按钮时,我没有得到任何答案,我甚至不能在鼠标悬停上看到(导致按钮颜色发生变化)。
这里有什么问题?
- 我使用Extjs 4和Extjs MVC。
- 我有一个网格控制器和编辑学生页面。
答
a)您在这里没有使用MVC模式。通过Sencha调用MVC,您可以将所有代码放在控制器中而不是事件监听器中。
b)我强烈怀疑这段代码会导致某处出现死锁,并且事件连续发生,导致浏览器冻结。您需要使用调试器来查看究竟发生了什么。
答
我认为你误解了成功在窗体上的配置。 尝试:
listeners:{
itemdblclick: function (gridView, record, item, index, e, eOpts) {
var editStudent = Ext.getCmp('editStudent');
if(editStudent == undefined)
editStudent = Ext.create('H.view.EditStudent');
/* Load record in the form.
Form must have on formfields property: 'name' equals to 'dataIndex' */
editStudent.getForm().loadRecord(record);
var panelMain = Ext.getCmp('panelMain');
panelMain.items.clear();
panelMain.add(editStudent);
}
成功和失败是提交功能的回调函数。