加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

FlexViewer中DataManager实现Widget的间接交互-仅供参考

发布时间:2020-12-15 03:46:01 所属栏目:百科 来源:网络整理
导读:FlexViewer之Widgets之间通信 ? 2013-09-13 20:52:02|? 分类: FlexViewer |举报 |字号 订阅 看了一天的FlexViewer的Widgets之间通信,小小总结一下: 看DataManger中的代码: public function DataManager() ??? { ??????? super(); ??????? dataTable = ne
FlexViewer之Widgets之间通信 ? 2013-09-13 20:52:02|? 分类: FlexViewer |举报 |字号 订阅 看了一天的FlexViewer的Widgets之间通信,小小总结一下: 看DataManger中的代码: public function DataManager() ??? { ??????? super(); ??????? dataTable = new Hashtable();? //创建一个哈希表,作为存入数据; ?????? 当在Index中加载DataManger时,完成DataManger初始化,开始进行下面的监听; ??????? AppEvent.addListener(AppEvent.DATA_FETCH_ALL,fetchAllData);//监听WIdgetA中派发的事件DATA_FETCH_ALL,并在fetchAllData中派发DATA_SENT事件,并将哈希表发送出去,在WIdgetA监听DATA_SENT事件,并接收哈希数据。 ??????? AppEvent.addListener(AppEvent.DATA_PUBLISH,addData);//在WidgetB中派发DATA_PUBLISH事件,并且派发数据,addData将WidgetB发送的数据存入表; ??????? AppEvent.addListener(AppEvent.DATA_FETCH,fetchData);?? ?这句没用; ??? } private function fetchAllData(event:AppEvent):void ??? { ??????? AppEvent.dispatch(AppEvent.DATA_SENT,dataTable); ??? } ??? private function addData(event:AppEvent):void ??? { ??????? var key:String = event.data.key;//event.data的类型为Object,其中有一个String类型的key属性,和一个Object类型的collection属性。 ??????? if (key) //如果key存在 ??????? { ??????????? var dataCollection:Object = event.data.collection; ??????????? if (dataTable.containsKey(key)) //如果这个key值已经在哈希表里存在,则将此key值移除。 ??????????? { ??????????????? dataTable.remove(key);//移除key的同时,也会删除和key对应的collection值; ??????????? } ??????????? dataTable.add(key,dataCollection);//将key值和collection值存入哈希表。 下面没用 ??????????? var data:Object = ??????????????? { ??????????????????? key: key,??????????????????? data: dataTable ??????????????? }; ??????????? AppEvent.dispatch(AppEvent.DATA_NEW_PUBLISHED,data); ??????? } } 看WidgetB代码: widgetConfigLoaded="basewidget1_widgetConfigLoadedHandler(event); ??????????????????????? [Bindable] private var str:Object; [Bindable] private var keystr:String; protected function basewidget1_widgetConfigLoadedHandler(event:Event):void { var data:Object; str="我是发送者,我已经发送数据,我是WidgetB;"; keystr = "WidgetB"; data= { key:keystr,collection:str }? //制作Data数据完成,一个string的key值,和一个Object类型的 AppEvent.dispatch(AppEvent.DATA_PUBLISH,data);//派发DATA_PUBLISH事件,并且派发data,在Datamanger中接收并存贮在一个哈希表里面; } 当事件派发完成后,以后就和WidgetB一点关系都没有了。 看WidgetA中的代码: widgetConfigLoaded="basewidget1_widgetConfigLoadedHandler(event); ??????????????????????? [Bindable] private var keystr:String; protected function basewidget1_widgetConfigLoadedHandler(event:Event):void { AppEvent.addListener(AppEvent.DATA_SENT,dataSentHandler);//监听DATA_SENT事件,此时DATA_SENT事件还没有派发,在下面一句派发DATA_FETCH_ALL事件,DataManger中监听DATA_FETCH_ALL事件的处理程序中派发DATA_SENT事件。 AppEvent.dispatch(AppEvent.DATA_FETCH_ALL);//想要获得Datamanger中存储的所有数据,已经在datamanger中监听此事件。 } private function dataSentHandler(event:AppEvent):void? //处理从datamanger中得到的数据 { var key:String = "WidgetB";//根据key值选择自己想要的数据 var dataCollection:Object = event.data.find(key);//通过key获取相应的实体数据。 sendResult.text = key+dataCollection.toString();//操作,此处为显示。 } 理解的还不是很透彻,有些代码还不知道什么作用,渐行渐远吧·························

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读