0

applicationX.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:TabbedViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                                  xmlns:s="library://ns.adobe.com/flex/spark" applicationDPI="160" >

    <s:ViewNavigator label="Login"    width="100%" height="100%" firstView="views.LoginView"    />
    <s:ViewNavigator label="Settings" width="100%" height="100%" firstView="views.SettingsView" />

</s:TabbedViewNavigatorApplication>

Settings.mxm(設定ビュー):

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" >

    <s:Label id="myLabel" />
</View>
  • ログインビューからmyLabelにアクセスするにはどうすればよいですか?
4

2 に答える 2

1

設定をシングルトンに設定します。つまり、アイテム自体を指す静的変数を定義します(Settings.mxmlのインスタンスが1つだけ必要です)。

追加

public static var instance:Settings;

設定に。initializeEventListenerを設定に追加し、関数内でインスタンスを設定します。

instance=this;

次のように、シングルトンを取得することで、いつでも[設定]ページにアクセスできます。

Settings.instance.myLabel.text="success";
于 2012-12-04T22:58:46.523 に答える
1

あなたはすべきではありません。あるビューが別のビューの内部にあるものを知ることは決してありません。必要なのは、ログインで設定して設定で表示できる.loginStatusなどのプロパティを持つモデルです。これを実現するために、多くのMVCスタイルの1つを使用できます。MVCパターンとFlexをグーグルで調べて、これが行われるさまざまな方法を確認してください。それまでの間、たとえば次のように簡単に説明します。

Settings.mxml:

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" >

    <fx:Script>
        <![CDATA[
            private var model:MyModel = MyModel.getInstance();
        ]]>
    </fx:Script>

    <s:Label id="myLabel" text="{model.loggedInStatus}" />
</View>

Login.mxml:

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" >

    <fx:Script>
        <![CDATA[
            private var model:MyModel = MyModel.getInstance();

            private function loginSucceded():void{
                model.loggedInStatus="Logged In";
            }
        ]]>
    </fx:Script>

</View>

MyModel.as

.loggedInStatusという名前のプロパティを持つシングルトンクラス。さまざまなシングルトンパターンと、私が使用しているものを使用する理由についての議論については、この他の回答AS3シングルトン実装を確認できます。

これは非常に単純な例です。人間が読み取れる文字列loggedInStatusを使用して、状態などを判別することは望ましくありません。ただし、これはモデルがどのように機能するか、およびモデルの状態に基づいてビューが適切なものを表示する方法の例です。

于 2012-12-05T04:59:04.287 に答える