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

           {

              //HistoryManagersave()方法保存了组件的当前状态,在第一次注册组件时,必须调用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>

你可能感兴趣的:(Flex 历史管理)