在使用Cairngorm框架时或许会遇到如下的情况,Model中的数据在Control层被修改,而你又希望只要Model中的数据一旦被修改,View层就会相应的改变。通常情况下,数据绑定(Data Binding)就可以完成以上的功能,但是也有一些特例的情况,比如你要根据Model数据的改变来改变View的现实方式。
例如根据Model中数据的改变,来自动打开Tree控件中的根节点,使其实现默认状态下,根节点为打开状态。如果一开始就设置根节点为打开状态,由于Tree控件的子节点数据还未被Loding,会造成打开空的根节点的情况,所以,首先就要判断Tree控件的节点数据是否被获得,然后再设置根节点的打开状态。
Observe Conponent可以实现对Model中数据修改的监控,这个类的内容如下:
- package com.adobe.ac.util
- {
- public class Observe
- {
- public var handler : Function;
- public function set source( source : * ) : void
- {
- handler.call();
- }
- }
- }
就这么简单。之后只要在Application中调用即可。调用方式如下:
- <util:Observe source="{ model.myProperty }"
- handler="{ this.myFunction }"/>
这样,只要所要监控的myProperty每一次被SET( ex: model.myProperty=xxx ),相应的Handler( ex: myFunction )就会被调用。
参考文献:
The world's smallest tag?