才解决了Render里的Event的Bubble Up的问题,又遇到新问题:
我用PopupManager显示的一个新创建的弹出式窗口
里面要dispatchEvent一个事件,目的是从服务器端取得所需数据。问题来了,dispatchEvent一个事件,没有Mediator可以'听'到,想用PureMvc的方式为PopupWindow单独注册Mediator也不行(相当别扭)。
怎么办呢?
然后Google到好文一篇:http://www.munkiihouse.com/?p=45
这下清楚了,原来所有UIComponent的Parent是Application,而所有Popup的Parent是Application的上级SystemManager。也就是说,你在UICompent上addEventListener是不行的,必须要在SystemManager上addEventListener,还好,每个UICompent都有一个指向SystemManager的属性。
错误代码:
正确代码:
这样就可以在Mediator中响应Popup里面的事件了,注意:userUIComponent是任意一个ViewComponent, 因为不管那个ViewComponent的systemManager都是指向同一个SystemManager。
完了吗?还没有,Mediator中响应事件后从服务器端接受到了数据,怎么传给PopupWindow呢?因为PopupWindow是在PureMVC的体系之外的(是没有注册的),所以用普通的Mediator传给ViewComponent的办法是不行的。不过找到一个变通的解决办法:
还是要通过SystemManager中转:
然后在PopupWindow中监听SystemManager的事件就OK了:
问题解决。