起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3961|回复: 1

[分享] 巧妙利用一个MessageDialog-YesNo型解决不同询问窗口的回答

[复制链接]

851

主题

2560

帖子

5714

积分

论坛元老

Rank: 8Rank: 8

积分
5714
QQ
发表于 2019-5-26 23:41:11 | 显示全部楼层 |阅读模式
深夜发文,先感慨一把。X5真是越用越喜欢!!!
从学习X5至今,已经6个年头了。这期间一真在使用X5平台做各种开发。越用越喜欢。都用了这么长时间了,才发现里面原来还有很多自己没有用过的东西呢。利用周末,一顿研究。
分享一下刚才的发现。
情景描述:
       在一个W页面中,可以加入多个messageDialog组件 ,可以为每个组件设置弹出时显示的title message之类的属性,也可以选择弹出窗口的类型 如:OK OKCANCLE  YesNo 等。分别为每个组件指定onOk 、onYes 、 onClose等事件。我想这是大家通常的做法,因为我一直也是这么做的。
       其实深入想一下,每个组件到了浏览器端都会生成一大堆代码,并且还要注入好多事件,这其它是无形给浏览器增加了很大的负担,如果我们只是追求开发效率,这么做是最正确不过的了。反之要是为用户考虑,并且希望提升浏览器效率的话,最好就是使用一个messageDialog组件。
      其实一个messageDialog,如果光是弹出一个ok类型的提示的话,没有问题的,可以在show的时候通过指定参数,实现修改title,mesaage等信息。如果继续把需求复杂化,需要弹出两次messageDialog,并且要求类型为YesNo ,需要回答两个不同的问题。问1:你是男生吗?点yes时,答:【师哥你好】问2:你是女生吗?点yes时,答:【美女你好】 未命名1558881432.png
组件提供了接管onYes  onNo之类的事件扩展接口,但在接口里只能通过 event.button这个变量判断用户点了yes还是no。
如何判断用户是在询问男生的窗口中点了yes,还是在询问女生的窗口中点了yes呢?
关键点来了,其实真的很简单,聪明的同学别笑话我哈。  ****给messageDialog组件增加一个flag属性, 在每次show出窗口之前,改变flag的值。在事件中通过this.flag来获取这个属性。判断属性值,就可以了。
是不是非常简单?
发现问题,提出问题,找出方案,最重要的是要到在论坛里分享。jishuang老师,你说是不是?


企业应用定制开发。X5开发者。
手机:15065117236
QQ:87356667

30

主题

70

帖子

292

积分

中级会员

Rank: 3Rank: 3

积分
292
QQ
发表于 2019-5-27 18:21:57 | 显示全部楼层
请问你是女生吗?YesNoCancel
onYes={支持!};
onNo={骗子!};
onCancel={打酱油路过!};
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-4-26 15:44 , Processed in 0.081188 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表