Flex 历史管理
使用历史管理,用户可以用浏览器的后退和前进按钮来导航程序。比如,用户可以单击TabNavigator或者 Accordion容器的选项卡,然后单击浏览器的后退按钮回到先前的选项卡。 Flex中的所有导航容器都自动支持历史管理。如果想关闭这些容器的历史管理,只要把其historyManagementEnabled属性设置为false即可。如下所示: <mx:TabNavigator historyManagementEnabled = “false”> ViewStack容器的历史管理默认情况下是禁用的。 ? 特别要注意的是在预览本地文件时,IE不能启用历史管理,只有将文件部署到Web服务器或是通过HTTP URL 访问文件才能启用。 ? 当然也可以构建自定义的历史管理器,
自定义管理类实现的6个步骤: (1)??? 用HistoryManager类注册该组件。 (2)??? 在该组件中实现loadState()方法。 (3)??? 在该组件中实现saveState()方法。 (4)??? 在该组件实现toString()方法。 (5)??? 调用HistoryManager类的各种静态方法。 ? ? 如下所示: 这是自己参考的《Flex 权威指南》,没写详细,真正用的时候还得查阅具体资料。 <?xml version="1.0" encoding="utf-8"?> <mx:HorizontalList xmlns:fx="http://ns.adobe.com/mxml/2009" ????????????? ?? xmlns:s="library://ns.adobe.com/flex/spark" ????????????? ?? xmlns:mx="library://ns.adobe.com/flex/mx" ????????????? ?? implements="mx.managers.IHistoryManagerClient" ????????????? ?? creationComplete="registerWithHistoryManager()" height="142" width="492" dataProvider="{dataArr}"> ??? <fx:Script> ?????? <![CDATA[ ?????????? import mx.collections.ArrayCollection; ?????????? import mx.managers.HistoryManager; ?????????? import mx.managers.IHistoryManagerClient; ? ?????????? [Bindable] ?????????? private var dataArr:ArrayCollection = new ArrayCollection([{name:'laopo'},{name:'yaner'}]); ?????????? ?????????? private function registerWithHistoryManager():void ?????????? { ????????????? //HistoryManager的save()方法保存了组件的当前状态,在第一次注册组件时,必须调用save()方法。 ????????????? HistoryManager.register(this); ????????????? HistoryManager.save();?? ?? ?????????? } ?????????? ?????????? /**实现saveState方法*/ ?????????? public function saveState():Object{ ????????????? var state:Object = new Object(); ????????????? state.selectedIndex = this.selectedIndex; ????????????? return state; ?????????? } ?????????? ?????????? /**实现loadState方法*/ ?????????? public function loadState(state:Object):void ?????????? { ????????????? var newIndex:int; ????????????? if(state){ ????????????????? newIndex = int(state.selectedIndex); ????????????? }else{ ????????????????? newIndex = -1; ????????????? } ????????????? if(newIndex != selectedIndex){ ????????????????? selectedIndex = newIndex; ????????????????? //派发事件 ????????????? } ?????????? } ?????????? ?????? ]]> ??? </fx:Script> ??? <fx:Declarations> ?????? <!-- 将非可视元素(例如服务、值对象)放在此处 --> ??? </fx:Declarations> </mx:HorizontalList> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |