我正在使用Flex + java ..因为我有两个Sub mxml文件Sub1.mxml和Sub2.mxml
Sub1.mxml代码..
[Bindable] private var editTimetableVO:TimetableVO;
public function forwardToCreateEvent(event:MouseEvent):void
{
editTimetableVO = new TimetableVO();
editTimetableVO=editDataGrid.selectedItem as TimetableVO;//editDataGrid is DataGrid id
Alert.show("value "+editTimetableVO.startDate);
}
听到警报是打印一些好日期...然后是我的第二个Mxml文件..
Sub2.mxml代码..
public var myEditEvent:Sub1 = new Sub1();
private var timetableVO:TimetableVO = new TimetableVO();
// private var editTimetableVO:TimetableVO = new TimetableVO();
protected function init(event:FlexEvent):void
{
Alert.show("Show");
timetableVO=myEditEvent.editDataGrid.selectedItem as TimetableVO;
Alert.show("value "+timetableVO.startDate);
}
但在那段时间警报不打印....
是他们以任何其他方式访问Sub1.mxml中的editTimetableVO
到Sub2.mxml文件......
答案 0 :(得分:2)
尝试创建一个modelLocator(单例类并在该文件中放入“editTimetableVO”的引用)。这样,整个应用程序生命周期中只存在一个“editTimetableVO”变量实例,因为您已将此变量声明为Bindable,因此应用程序中任何位置发生的更改都会立即反映。
答案 1 :(得分:1)
package
{
public class ModelLocator{
public static var instance:ModelLocator;
public var editTimetableVO:*;
public function ModelLocator(instance:SingletonEnforcer){}
public static function getInstance():ModelLocator{
if(!instance){
instance = new ModelLocator(new SingletonEnforcer());
}
return instance;
}
}
}class SingletonEnforcer{}
// sub1.mxml
[Bindable]private var model:ModelLocator = ModelLocator.getInstance();
public function forwardToCreateEvent(event:MouseEvent):void
{
model.editTimetableVO = new TimetableVO();
model.editTimetableVO=editDataGrid.selectedItem as TimetableVO;//editDataGrid is DataGrid id
Alert.show("value "+model.editTimetableVO.startDate);
}
// Sub2.mxml
[Bindable]private var model:ModelLocator = ModelLocator.getInstance();
protected function init(event:FlexEvent):void
{
Alert.show("Show");
model.timetableVO=myEditEvent.editDataGrid.selectedItem as TimetableVO;
Alert.show("value "+model.timetableVO.startDate);
}