0

Flex+javaを使用しています。2つのSubmxmlファイル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);
            }

アラートが表示されるのは、日付を印刷することです。それから、2番目の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);

        }

editTimetableVOしかし、その時点では、アラートは印刷されていません.... Sub1.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 に答える