首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ViewStack中的视图之间传递参数

在ViewStack中的视图之间传递参数
EN

Stack Overflow用户
提问于 2011-03-20 01:32:20
回答 2查看 1K关注 0票数 0

我想知道如何在ViewStack中将值传递给"SelectedChild“:

在下面的示例中,我试图在一个名为"register“的窗体中设置一个公共属性,这个窗体是我从另一个名为"login”的窗体导航到的。

我得到的结果似乎是一个编译错误:

代码语言:javascript
复制
Error: Access of possibly undefined property pagename through a reference 
with static type mx.core:INavigatorContent. 
vsMain.selectedChild.pagename = "register page";

你知道解决方案是什么吗?谢谢。

代码语言:javascript
复制
 <mx:Panel x="0" y="0" width="285" height="221"
     layout="absolute" title="ViewStack Basic ">
    <mx:ViewStack x="0" y="0" id="vsMain" width="100%" height="100%">
          <mx:Canvas id="cnvLogin" label="Login" width="100%" height="100%">
            <mx:Script>
            public function myClick():void  { 
                vsMain.selectedChild=cnvRegister;
                vsMain.selectedChild.pagename = "register page";
            }
            </mx:Script>

        <mx:Label x="10" y="10" text="Login Page" fontWeight="bold"/>
        <mx:Label x="10" y="36" text="Username:"/>
        <mx:TextInput x="85" y="34" id="txtLoginUser"/>
        <mx:Label x="10" y="62" text="Password:"/>
        <mx:TextInput x="85" y="60" id="txtLoginPass"/>
        <mx:Button x="10" y="100" label="Login" id="butLogin"/>
        <mx:LinkButton x="126" y="100" label="Need to Register?" enabled="true"
           click="myClick()"/>
      </mx:Canvas>
      <mx:Canvas id="cnvRegister" label="Register" width="100%" height="100%">
          <mx:Script>
         [Bindable]
            public var pagename:String;

          </mx:Script>
        <mx:Label x="10" y="10" text="{name}" fontWeight="bold"/>
        <mx:Label x="10" y="36" text="uname"/>
        <mx:TextInput x="107" y="34" id="txtRegUser" width="138"/>
        <mx:Label x="10" y="62" text="Password:"/>
        <mx:TextInput x="107" y="60" id="txtRegPass" width="138"/>
        <mx:Label x="10" y="90" text="Password Again:"/>
        <mx:TextInput x="107" y="88" id="txtRegPassAgain" width="138"/>
        <mx:Button x="10" y="141" label="Register" id="butRegister"/>
        <mx:LinkButton x="107" y="141" label="Already Registered?" enabled="true"
           click="{vsMain.selectedChild=cnvLogin}"/>

      </mx:Canvas>
    </mx:ViewStack>
  </mx:Panel>
</mx:Application>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-20 04:11:02

如果我没看错的话,您想要做的就是将数据从视图堆栈中的一个视图传递到另一个视图?您应该做的是在与视图堆栈相同的级别上拥有一个可绑定的数据模型:

代码语言:javascript
复制
<fx:Script>
    <![CDATA[
        // Just a class with public variables where you save/bind data
        [Bindable] private var _model:SomeModel;  
    ]]>
</fx:Script>

<mx:ViewStack>
    <!-- You need to create a public variables 'dataProvider' in both there views -->
    <View1 dataProvider="{this._model}" />
    <View2 dataProvider="{this._model}" />
</mx:ViewStack>

如果您更改了第一个视图中的数据,则第二个视图将能够在实例化时看到它。

票数 0
EN

Stack Overflow用户

发布于 2011-03-20 02:02:47

您应该将声明移动到顶部元素,以使变量对ViewStack组件是公共的:

代码语言:javascript
复制
<mx:Script>
    [Bindable]
    public var pagename:String;
</mx:Script>

<mx:Panel x="0" y="0" width="285" height="221"
    layout="absolute" title="ViewStack Basic ">
    <mx:ViewStack x="0" y="0" id="vsMain" width="100%" height="100%">
    ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5363637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档