viewStack 第一次创建后,后面viewStack切换时,viewStack的子组件没有重新初始化,如果要强制重新初始化,必须先从viewStack移除改组件,然后重新加入到viewStack.
<mx:ViewStack id="viewStack" creationPolicy="auto" width="100%" height="100%"
change="viewStack_changeHandler(event)" >
<s:NavigatorContent id="MAINFORM" width="100%" height="100%" >
<view:MainForm id="showForm" width="100%" height="100%"/>
</s:NavigatorContent>
<s:NavigatorContent id="USERSET" width="100%" height="100%">
<view:UserSetForm id="userSetForm" width="100%" height="100%"/>
</s:NavigatorContent>
<s:NavigatorContent id="SURBETSET" width="100%" height="100%">
<view:SurebetSetForm id="surbetSetForm" width="100%" height="100%"/>
</s:NavigatorContent>
<s:NavigatorContent id="MAKERSSET" width="100%" height="100%">
<view:MakersSetForm id="makersSetForm" width="100%" height="100%"/>
</s:NavigatorContent>
<s:NavigatorContent id="REPORT" width="100%" height="100%">
<view:ReportForm id="reportForm" width="100%" height="100%"/>
</s:NavigatorContent>
<s:NavigatorContent id="calcContent" width="100%" height="100%">
<view:CalcForm id="calcForm"/>
</s:NavigatorContent>
<s:NavigatorContent id="viewMakersDetailContent" width="100%" height="100%">
<component:ViewMakersDetail id="viewMakerDetailForm"/>
</s:NavigatorContent>
</mx:ViewStack>
//强制viewStack更新
protected function viewStack_changeHandler(ie:IndexChangedEvent):void
{
// TODO Auto-generated method stub
var obj:NavigatorContent = ie.relatedObject as NavigatorContent;
if(obj.name=='calcContent'){
if(calcForm==null)
calcForm = new CalcForm();
calcContent.addElement(calcForm);
}else{
calcContent.removeElement(calcForm);
calcForm = null;
}
}
不知道大家有米有其他更好的方式。。。。。。。。。。。 flex 采用Hero SDK。。。。