0

我正在使用 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);

        }

但在那个时候警报不打印......他们是否有任何其他方式可以访问editTimetableVOSub1.mxml 到 Sub2.mxml 文件......

4

2 回答 2

2

尝试创建一个modelLocator(单例类并将“editTimetableVO”的引用放在该文件中)。这样,在整个应用程序生命周期中只存在一个“editTimetableVO”变量实例,因为您已将此变量声明为 Bindable,因此应用程序中任何地方发生的更改都会立即反映出来。

于 2012-12-31T08:00:26.547 回答
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);

    }
于 2012-12-31T08:09:41.167 回答