首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >捕获FormPanel退出

捕获FormPanel退出
EN

Stack Overflow用户
提问于 2014-09-05 18:24:45
回答 2查看 109关注 0票数 0

我们有一个表单面板,其中托管了一个可编辑的网格和一个“保存”按钮。

代码语言:javascript
运行
复制
PROJ.RWA = Ext.extend(Ext.form.FormPanel, 
{

    initcomponent:function(){
....
.....

var rwa_config = {
        ....... 
        tbar:rwa_tbar,
        items: [
            borr_grid, nonBorr_grid
            ],
        buttons: [{
                text: 'Save',
                handler:this.getValues
        },
        .....]
        .......             
    };

  Ext.apply(this, Ext.apply(this.initialConfig, rwa_config));
  PROJ.RWA.superclass.initComponent.call(this, rwa_config);
     }

}

此组件是从index.html加载的

如果网格上有未保存的更改,我们需要确保用户在离开此面板时收到警告。

如果网格是“脏”的,并且还没有点击“保存”-当用户导航到其他页面/面板时,我们应该弹出一个警告。

我们该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2014-09-05 18:54:52

您可以向事件beforedestroy添加侦听器,或者如果它正常关闭,则可以查看beforeclose

它看起来像这样:

代码语言:javascript
运行
复制
listeners: {
    beforedestroy: function( panel, eOpts ){
        //check if there are unsaved changes (and show dialog or smoething)
    }
}

您还可以在“之前”-event中使用return false;来阻止实际操作。

还可以查看beforedestroy doc

票数 0
EN

Stack Overflow用户

发布于 2014-09-05 19:06:22

首先:我猜当单击save时,您会调用一个返回success:true的操作。然后,存储中的所有记录都被标记为“非脏”。

因此,您只需检查网格是否有脏记录。

根据您“离开”网格的确切方式,您可以监听以下一个或多个事件:

  • beforeclose
  • beforedestroy
  • beforehide

在处理程序中,您将执行以下操作:

代码语言:javascript
运行
复制
onGridExit:function(grid) {
    if(grid.getStore().getUpdatedRecords().length>0) {
        Ext.MessageBox.alert('Unsaved changes','Would you like to save your changes?',function() {
            ...
        });
        return false;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25683738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档