解决EasyUI插件window弹窗title没更新以及使用后遇到的问题总结

6 篇文章 0 订阅
4 篇文章 1 订阅

问题是这样的,在做分类和标签功能时,用相同的window代码来添加和修改信息,结果当我点分类的修改后再点标签的添加,但是标题竟然没有改变,如下图。

这很容易让人觉得是缓存问题,于是查看官网文档,由于window是继承panel,在window那里只能看到部分信息,我们到panel的Properties可以看到cache属性默认是true的,但你会发现加了“cache: false,”后还是没有解决问题。 

$('#w').window({
    cache: false,
    width: 300,
    height: 240,
    closed: true,
    collapsible: false,
    minimizable: false,
    resizable: false,
    modal: true,
    maximizable: false,
    title: _title,
});

再往下看文档,发现在Methods下面有个clear,看描述“Clear the panel content. Available since version 1.4.”意思就是从1.4开始支持清除panel内容,我用的是1.10.2明显已经支持了,但是加载window前,先执行“$("#w").window('clear');”还是没用。

接下来试一下destroy这个参数为forceDestroy的方法,看起来有点暴力,在加载window前,先执行“$("#w").window('destroy', {forceDestroy: true});”,结果好像可以。

但是多测试一下发现会报错,显然destroy也是不行!只好打开调试看一下生成的代码了。

结果发现生成了两个panel,而且属性什么的都一样,所以它直接拿第一个的title,这才导致title没改变!

再看看文档,发现有个setTitle方法,于是我们在打开窗口前先设置下标题就可以解决了!

 

function openWindow(_title, _html) {
    $('#w').window({
        cache: false,
        width: 300,
        height: 240,//260,
        closed: true,
        collapsible: false,
        minimizable: false,
        resizable: false,
        modal: true,
        maximizable: false,
        title: _title,
    });
    $("#w").html(_html);
    $("#w").window('setTitle', _title);
    $('#w').window('open');
}

另外如果是请求数据存在缓存可以在URL加上诸如new Date().getTime();的时间戳看能不能解决。

其他经常遇到的问题,比如用js拼接元素后样式和事件失效,这个可以把要动态拼接的东西搞个隐藏的div来放,然后直接获取它。要是像datagrid直接用id(#tb)来渲染toolbar会把隐藏div的元素给挪过去,可以先定义个全局的变量在加载toolbar前先获取隐藏div的内容并赋值给它,这样就可以多次使用了。如果怎么搞都无法实现,那就要看看是不是设计得有问题,像我这里为了复用代码多个地方使用一个window就会出问题了,实在不行就看看能否用其它实现方式代替。

不知道怎么上手EasyUI的可以看一下我的《快速上手EasyUI》。

个人网站有更多原创文章,原文链接:https://www.xubingtao.cn?p=3954

关注我的公众号每天为你分享各类有用信息。

更多内容请访问我的其他端:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值