最近在一个Flex遗留系统上工作,Flex部分承担的主要是用户注册的业务。
用户注册需要多个步骤,比如填写完基本信息,通过验证之后,来到联系信息填写表单,等等。步骤之间的切换通过改变当前页面的state来实现:State控制不同控件的显示、掩藏等。
直觉不应该这么实现,今天看了《Flex 3权威指南》 之后,终于找到了答案:ViewStack才是这种场景的正确实现方式。
State和ViewStack虽然都可以用来实现上述的场景,但使用state方式的问题在于它不是为这种场景设计的实现方式。所以,在实现过程中可能会非常痛苦。
以下是State和ViewStack的一些区别:
State | ViewStack | |
使用场景 | 一个View的不同状态。比如一个页面在普通用户登录 时只能看到概要信息,而当管理用户登录时可以看到 详细信息,这是同一个view的两种不同状态。 | 用来控制差异很大的View之间的跳转和变迁。比如一个用户注册过程中的各个步骤。 |
技术实现 | 1. 需要一次初始化所有的components。 2. 基本上背后是一个MXML,内部component的较小变化。 3. 同上,基本对应一个数据。 | 1. 可以使用creationPolicy参数来控制延迟初始化。比如可以让stack中的每个view 在导航到它时才初始化。 2. 多个MXML之间的转移。 3. 同上,对应多个数据。 (当然,多个MXML和多个数据都不是必须的) |
-- EOF --