我有一个单一州级,大致看着类似情况(只有更具有约束性的公共财产):
public class Session extends EventDispatcher
{
private var _Id:String;
private static const _instance:Session = new Session( SingletonLock );
private static const SESSID_CHANGED:String = SessionIdChanged ;
public function Session( lock:Class ){
//SingletonLock is an empty class not available outside this file
if( lock != SingletonLock ){
throw new Error("Don t instantiate Session. Use Session.instance");
}
_Id = "";
}
public static function get instance():Session{
return _instance;
}
// Changes a blob object (from the server xml for sessions) to a session object
public function updateFromXMLObj(s:ObjectProxy):void
{
_instance.Id = s.Id;
}
[Bindable(event=SESSID_CHANGED)]
public function get Id():String{
return _Id;
}
public function set Id(new_id:String):void{
if(this._Id != new_id){
this._Id = new_id;
this.dispatchEvent(new Event(SESSID_CHANGED));
}
}
public function registerOnSessionChange(listener:Function):void{
addEventListener(SESSID_CHANGED,listener);
}
public function unregisterOnSessionChange(listener:Function):void{
removeEventListener(SESSID_CHANGED,listener);
}
}
想法是,在一些哺乳动物法典中,我有数据约束性表述,如:
<mx:HTTPService id="homeReq" url="{URLs.homepath(Session.instance.Id)}" ... />
希望在本届会议上更新<代码>homeReq 的索引 变化。 此外,守则的其他部分(行动说明)需要能够在届会时登记其听众。 缩略语
异常的“I m”发现,通过<条码>登记在SessionChange上的活动聆听器的确在会议Id改动时被点名,但具有约束力的数据和元数据交换数据表示没有更新。 我尝试了在捕捉阶段发送活动的所有组合,使其无法取消,但却没有结果。 我对[Bindable(event=......)]的理解是, MXML应当更新在发出具体事件时的舱面,因此,我做了什么错误或误解?
注:我认识到,在《行动说明》中,有多种不同的做法,但除非我这样做的方式实际上造成我的问题,否则我不希望通过讨论替代办法而回避。