本文主要是介绍禁止Accordion和TabNavigator自动更新URL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
说到深层链接(Deep linking),少不了要讲一讲Flex 2中的HistoryManager。利用HistoryManager,用户可以使用Web 浏览器的后退和前进导航按钮在Flex 应用程序中导航,与Flex 3中的BrowserManager功能相似。
通常情况下,应使用BrowserManager类和深层链接来维护Flex 应用中的状态并处理URL和浏览器历史记录。但有些导航器容器(如Accordion和TabNavigator )默认情况下启用历史记录管理功能,因此这种情况下会比使用BrowserManager简单。但对于其他组件和容器,我们需要自定义历史记录管理,相对复杂,因此更多时候不使用HistoryManager类。
我们可通过将上述导航器容器的historyManagementEnabled
属性设置为false
来禁用历史记录管理。要向HistoryManager 类注册一个组件,需要调用HistoryManager 类的 register()
方法,还必须实现 IHistoryManagerClient 接口的saveState()
和loadState()
方法。
点击查看实例效果,点击下载该实例源码。
创建自定义列表框后,我们必须向HistoryManager类注册其实例。一般是在creationComplete事件处理函数中注册,如下面的代码:
creationComplete="mx.managers.HistoryManager.register(this);"
IHistoryManagerClient接口要求在列表框中实现saveState和loadState方法。当该列表框的选项一更改,将调用listChanged方法,该方法会调用HistoryManager的save方法来保存用户当前选择的哪一选项。保存完成后会调用saveState方法,而该方法将返回一个对象来保存浏览器记录。在本例中,saveState方法返回属性为selectedIndex的对象,该属性值等于自定义列表框的选项索引。
当使用后退和前进导航按钮更改浏览器历史记录时,将调用loadState方法。该方法从State参数对象中读取 selectedIndex属性值并更改列表框的selectedIndex属性。
从本例也可以看出,使用HistoryManager和BrowserManager进行深层链接时,浏览器URL片段是不同的。前者会自动添加app参数,app参数值及其它参数名的前缀(状态ID)都是16进制压缩的字符串。注意HistoryManager是用&来分隔URL片段中的名称=值对。
引用地址:http://www.riafan.com/article.asp?id=143
这篇关于禁止Accordion和TabNavigator自动更新URL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!