EXTJS鼠标点击后不工作加载多时间

问题描述:

页我有我的面板上的网格,命名gridViewgridView是在一个名为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); 
} 

成功失败是提交功能的回调函数。