ligerUI的$.ligerDialog.open弹框点X关闭后出现的问题以及解决办法

        首先不得不承认,对于ligerUI的认识,我看到的只是表面,毕竟我没有深入到去看它的源码,但这毕竟是我开发过程中遇到的一个问题,所以我还是分享给大家。

        这是我开发中的一个小界面:

单击然后弹窗
这是弹窗代码,我用的是$.ligerDialog.open
这是弹窗的效果

       有同事和我反应,有时候单击上面的确定按钮,没有一丁点反应,就算重新打开第一个图片的窗口,同样没反应,只能刷新链接重新打开,但是单击取消按钮,就没有任何问题,我第一想法那就是可能我处理单击确定按钮后所执行的代码有问题,于是我就慢慢跟踪了代码,怪了,没问题啊,总是能成功啊,没任何问题啊,直到我试着点了一下 X 关闭弹框

单击X关闭弹框

        再次打开弹框

再次单击打开弹框

        然后怎么按确定都没有反应

页面效果一点反应都没有

但是!!!!看底层的代码

undefined?未定义?

        因为是未定义,所以下面的代码也就没执行,所以也就没反应,怪了,那为什么是未定义呢?单击弹框的X按钮后,页面到底经历了一些什么可怕的东西,于是我屁颠屁颠的去看了ligerUI官网的demo,点确定和取消都没有问题,但是单击X关闭,在重新打开弹框后就有问题了。

点X前,可以选择并返回数据
数据没选上,还弹出一个框,如下
弹出的框

        那我们就看看demo的源码吧

demo的源码

        看demo的源码,既然弹框,那说明源码里!data=true;那么data有可能是false,null,undefined的一种,毕竟是demo,没法debug跟踪,但是我猜data是undefined,因为我的是undefined,而checkDataBool = itemCheckData();说明itemCheckData()没有返回任何东西。

       而var itemCheckData = dialog.frame.f_itemCheckData || dialog.frame.window.f_itemCheckData;那么我们就看f_itemCheckData()方法就行了

f_itemCheckData()方法的代码

        然后在点X关闭重新打开弹框后,debug跟踪一下

这里数据竟然是空的

        数据是空的,直接return,没有返回任何值,所以checkDataBool是undefined,那么基本可以确定源码中的data就是undefined,源码也是没有数据返回。连官网给出的demo都出这个问题,那怎么办啊,去探索源码?好怕好怕,没那个时间啊,那先这样吧,哈哈。

      哈哈?那就这样吧?官网都出的问题就不用管了么?但这毕竟是真实存在的问题啊,知难而退,临阵逃脱不是我的风格,那就知难而进?不,知难不是进,而是智进,既然这样,那我想啊,我代码里点确定最后走的是框架的close()方法,没问题,那点X有问题,那么点X底层走的方法肯定不是close()啦,所以呢,我进去框架里的ligerDialog.js看一眼,经过九九八十一难,我终于找到了框架里点X的点击事件


框架里提供的点X的单击事件

        咦,你们看到上面有两个方法了么,g.hide();和g.close();既然点X没有走g.close();那肯定是走g.hide()啦,那按照我们的想法,只要点X单击事件走的是g.close();那么对于我们的需求来说,是没问题的,是吧,那我们把源码改么?把if干掉么?那怎么行,框架又不是为你这一个弹框服务的,你这么一改,其他的不就爆炸了?那怎么办啊,哎呀,没看到 if 里面的的p.isHidden么?p是什么?Lui,不想找,不是累,是lui,累就是累了,lui,那就是累得不得了了,之前找点X的单击事件已经很累了,再找p?那就很lui了,不想找p,那就找isHidden吧,

看到了吧

        这不就是Dialog源码里面提供的参数么?再看注释,原来之前在点X单击事件里看到的2个方法g.hide();和g.close();前者是隐藏,后者是销毁,既然这样,那就去找ligerUI的API吧。

ligerUI的API

        真是大快人心啊,Dialog有了这么一个参数,那就好办了,在我需要的Dialog里面配上这么一个参数,设为false,那么底层点X单击事件不就走else了么,接着走close()方法,这样就和单击确定的一致了,那就问题解决了。

我在我需要的Dialog加参数isHidden,置为false

        再测试,好了,我的问题解决了,跟踪也有数据了,我就不截图给你看了,不过要按照你的需求来决定点击X单击事件是要隐藏还是摧毁哦,不要盲目加哦。

        最后的最后,至于为什么隐藏我会出问题,写到现在,我真的是太lui了,不想再进一步探索了,有时间再研究吧,不过我的猜测是这样的,我点X隐藏后,这个东西还是存在的,只是隐藏了,看不见而已,当我再次弹框时,会重新弹框,那么实际上就会有多个弹框,这样选数据的时候就会错乱,那么,如果我的猜测是正确的话,那我也不一定加上isHidden这个参数,只要修改弹框功能,设一个变量,第一次弹新框,点X隐藏,点确定和取消也不要close()了,改为hide();这样当我再次点击的时候,根据变量就不要弹新框了,原来的框show()显示就行了,哈哈,我没有去试验,只是这样猜测,你们可以试试啊,睡觉睡觉。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容