EasyUI动态创建、删除模态Dialog

本文探讨了如何在EasyUI中动态创建和删除模态Dialog,以解决界面耦合度高和复用性差的问题。针对需要根据不同操作显示不同内容的场景,提出了在编辑列表记录时,通过判断并删除现有Dialog,再根据主键动态获取数据创建新Dialog的策略。文章提供了具体的实现代码,以‘修改列表’功能为例,展示了如何提取公共方法来动态生成Dialog。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、前言


一般EasyUI都是在一个界面实现模块的增删改查,对于部分业务场景需要考虑分开展现模块的增删改查界面,单一界面实现的优缺点如下:
优点:开发简单、开发速度快;
缺点:添加、修改等界面无法复用;界面耦合度高;

2、需求

菜单模块存在多个操作界面,比如:添加(修改)菜单、添加(修改)权限,关联角色,如果模块的所有功能在一个界面实现,界面的代码量非常大,可维护性差。针对该类情况,需要将模块的功能界面分开处理,采用弹出窗口实现。对于每次操作都需要动态改变窗口内容(比如:修改、详细界面)的需求,本文将讨论这类需求的实现方案

3、实现方式

以“修改列表”的数据为例,阐述代码的具体实现。
对列表行记录进行编辑时,需根据当前行的主键动态获取数据,在修改界面弹出窗口展现内容,由于功能界面和列表界面分开处理,每次都需创建新的Dialog,为了避免创建多个Dilaog div,在点击“编辑”时,需判断当前是否存在该功能类型ID的DIV(editform),先删除存在的(editform)Div Dialog元素,再根据Url重新创建Dialog。考虑模块的功能界面比较多,提取公共创建Dialog方法,在界面业务方法中显示窗口,具体代码如下:

这里写代码片
//移除存在的Dialog
$("#editform").remove();或 $("body").remove("#editform");
**先根据div的id删除,但界面元素还是会存在dialog div,还需执行dialog的销毁操作**
$("#editform").dialog('destroy');
//创建窗口
createModalDialog("editform","/user/modify","测试界面", 400, 300);
$("#editform).dialog('open');

4、实现代码

/**
 * 创建一个模态 Dialog
 * 
 * @param id divId
 * @param _url Div链接
 * @param _title 标题
 * @param _width 宽度
 * @param _height 高度
 * @param _icon ICON图标
 */
function createModalDialog(id, _url, _title, _width, _height, _icon){
    $("body").append("<div id='"+id+"' class='easyui-window'></div>");
    if (_width == null)
        _width = 800;
    if (_height == null)
        _height = 500;

    $("#"+id).dialog({
        title: _title,
        width: _width,
        height: _height,
        cache: false,
        iconCls: _icon,
        href: _url,
        collapsible: false,
        minimizable:false,
        maximizable: true,
        resizable: false,
        modal: true,
        closed: true
    });
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值