我的面板上有一个名为gridView
的网格,而gridView
位于名为panelMain
的面板中,网格行上的dbclick
侦听器,我加载了一个来自做这样的事情:
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
并返回网格工作时,但当我再次进入学生表格时,学生页面不会触发任何事件,当我点击编辑按钮时,我没有得到任何回答,我甚至看不到鼠标悬停(这会导致按钮颜色发生变化)。
这是什么问题?
答案 0 :(得分:1)
我认为您误解了表单上的成功配置。 尝试:
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);
}
成功和失败是提交功能的回调函数。
答案 1 :(得分:0)
a)你这里没有使用MVC模式。使用Sencha所谓的MVC,您可以将所有这些代码放在Controller而不是事件监听器中 b)我强烈怀疑这段代码会导致某些地方发生死锁,事件连续发生,导致浏览器冻结。您需要使用调试器来查看到底发生了什么。