DropDownList changing 相关问题

下面是在自己在运用DropDownList时,DropDownList.set selectedItem()方法触发事件的问题

 

需求很简单,初始化UI时,从数据库查出“生词本”放入DropDownList;选择不同的“生词本”,则再查询出这个生词本里的生词。

 

但我有个想法:如果用户选择了某个生词本后,查询过程中出了意外未能成功返回所需数据,则DropDownList的选项不改变。结果我在实现这个想法的过程中,遇到了麻烦。

 

代码如下:

 

在mxml文件中,我有一个DropDownList,表示“生词本”:

 

上边的controller是这个UI的控制类,其 handleDdlChange方法如下:


我的想法是,在DropDownList changing 时,先prevent掉他的默认改变,并往后台递交一个查询,这个查询在dataList中封装好了,是一个RemoteObject call,然后根据查询的结果,用编程方式设置DropDownList的selectedItem(见函数①、②)。

 

本来觉得应该挺好,但是一运行,发生了问题....  函数①中的最后一句代码"view.ddlBook.selectedItem=selObj"竟然触发了changing事件,于是,handleDdlChange方法被调用,于是...我的程序死循环了,1秒之内我的后台收到了几百次查询。

 

我原本以为编程方式设置DropDownList的selectedItem时,是不会触发changing 事件的,不过它确实发生了。跟踪set selectedItem()方法,发现它直接把逻辑代理给了下面这个函数,我们称之为函数③:

 

首先,函数③的最后一句,会开始这样的后续流程:invalidateProperties() --> commitProperties -->

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值