读书人

[译] Flex Collection 事件跟手动通知

发布时间: 2012-10-26 10:30:58 作者: rapoo

[译] Flex Collection 事件和手动通知变化

?

[说明: 本文为?http://www.smithfox.com/?e=38?原创, 转载请注明原文, 谢谢]

英文原文:?http://livedocs.adobe.com/flex/3/html/help.html?content=about_dataproviders_5.html

原创翻译:?http://www.smithfox.com/?e=38

(JavaEye的文章编辑器怎么不能自动换行呢? 大家看的累就直接到我的个人blog看?[译] Flex Collection 事件跟手动通知变化?)

学习Flex中最常见的例子可能就是放一个DataGrid控件,然后放个HttpService之类和后台交互的组件,绑定一个ArrayCollection。

这个例子让我们养成了一个非常不好的习惯(最起码我看到的新手Flex程序都是这样): 每次都是根据后台数据构造生成新一个ArrayCollection对象,再赋给DataGrid控件的dataProvider,使整个DataGrid都刷新.

原因就是对Collection怎么和DataGrid进行交互根本不了解。看完这篇文章相信菜鸟能变成火鸟. (哈哈,还是鸟)

Collection事件和手动变化通知

集合用下面事件来表示发生了变化. 我们可以用这些事件来监控集合的变化从而作相应的显示上的更新.
Collection事件: CollectionEvent, PropertyChangeEvent和FlexEvent.

  1. 当今集合发生变化时, 发布 CollectionEvevnt.COLLECTION_CHANGE.
  2. CollectionEvent.kind(CollectionEventKind类型)用来表示是什么变化类型,比如UPDATE.
  3. CollectionEvent.items(是一个Array类型), 如果是ADD和REMOVE kind 事件, 这个数组包含了被删除或是被增加的items.?? 对于UPDATE事件, items则是一个事件数组,数组成员全都是PropertyChangeEvent, 每个事件表示相应的item的update
  4. PropertyChangeEvent.kind(类型是PropertyChangeEventKind)表示是那个属性发生了变化.
  5. 当游标位置发生了变化, 视图游标(View cursor)发布一个事件. ? type属性是FlexEvent.CURSOR_UPDATE

?

例如,一个自定义控件用一个collection作为它的data provider, 你肯定想每次collection发生变化时控件能被自动更新以显示修改后的最新数据. 这时上面这些集合事件就能派上用场.

假设我们做一个汽车租赁的预定系统. 应用程序就能用COLLECTION_CHANGE 事件来监听 预定信息.为这个事件的侦听器函数起个名字叫 reservationsChanged,这个函数判断 Change事件的kind 字段做不同业务逻辑.

读书人网 >flex

热点推荐