如何将Java对象发送到java中的两个mxml文件之间?

时间:2012-12-31 07:01:39

标签: java flex mxml

我正在使用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文件......

2 个答案:

答案 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);

    }