我有一个通过 AMF 从服务器延迟加载数据的既定模式。
private var _XeventDispatched:Boolean;
private var _X:ArrayCollection;
public function get X():ArrayCollection{
if(!_XeventDispatched && (_X==null || _X.length==0)){
var evt:Event = new Event();//whatever event is need for this data member
dispatcher.dispatchEvent(evt);
_XeventDispatched = true;
}
return _X;
}
public function set X(ac:ArrayCollection):void{
return _X;
}
这样,在需要数据之前,不会从服务器加载数据。(顺便说一下,我使用的是 Mate 框架,所以当 UI 被实例化并且注入器触发时,它们会在数据管理器类中调用这个 get 方法。)
我想做的是创建某种元数据标签,类似于 [Bindable],它将添加上述方法来代替公共属性。
[LazyLoaded(eventName="com.myCompany.LoadX")]
public var X:ArrayCollection;
编译器对这种类型的扩展有任何钩子吗?它将节省大量难以阅读的样板代码。