Ext JS正确的事件流程

时间:2015-12-10 06:55:12

标签: javascript events extjs datagrid sencha-architect

我希望用户通过捕获beforeselect事件确认他将点击网格上的其他项目而不保存最后一项上的更改。问题是我向用户显示messageBox确认,但事件在用户确认之前执行到最后。在用户做出选择之前,有没有办法阻止该事件?

onGridBeforeSelect() {
  Ext.MessageBox.confirm('Delete', 'Are you sure ?', function(btn){
   if(btn === 'yes'){
      return true; //will execute select event
   }
   else{
      return false; //woun't execute select event
   }
 });

}

2 个答案:

答案 0 :(得分:0)

您可以添加一些表示需要确认的标志,如果需要则返回false,然后如果确认则再次选择,例如:

function onGridBeforeSelect(grid, record) {
  if (grid.isConfirmed){
    return;
  }

  Ext.MessageBox.confirm('Delete', 'Are you sure ?', function(btn){
   if(btn === 'yes'){
      grid.isConfirmed = true;
      grid.setSelection(record);
      grid.isConfirmed = false;
   }

   return false;
 });

}

答案 1 :(得分:0)

标志方法不是很好的方法。此问题之前询问here,我的回答类似于this