将值从一个视图传递到另一个视图

时间:2012-03-07 21:09:50

标签: actionscript-3 flash-builder

我是actionscript3 / flashbuilder的新手,我正在尝试做一些简单的事情,比如将值从一个视图传递到另一个视图。

我解决了所有语法错误,但我仍然遇到NULL错误

  

(TypeError:错误#1009:无法访问空对象引用的属性或方法)

...即使我有硬编码的值用于测试。

我有2个视图,当我按下一个按钮时,它应该将值传递给另一个视图,然后在标签中显示传递的值。

以下是我的2个观点:

厂景:

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" title="view1">
    <fx:Script>
        <![CDATA[
        var value1:int = 1;
        var value2:int = 2;
        ]]>
    </fx:Script>
    <s:Button id="btn1" x="5" y="10" width="25" label="Button 1" click="navigator.pushView(view2, {val:value1})"/>
    <s:Button id="btn2" x="15" y="100" width="25" label="Button 2" click="navigator.pushView(view2, {val:value2})"/>
</s:View>

视图2:

 <s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" title="view2">
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->

</fx:Declarations>
<fx:Script>
    <![CDATA[
        var passedValue:int = data.val;
    ]]>
</fx:Script>
    <s:Label x="75" y="100" width="200" text="{passedValue}" />

任何帮助将不胜感激!

谢谢!

1 个答案:

答案 0 :(得分:5)

您的问题是您在创建视图之前尝试访问数据对象。

在视图中添加creationComplete处理程序:

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:s="library://ns.adobe.com/flex/spark" title="view2" creatonComplete="init(event)">

在init方法中,您将能够访问数据对象

<fx:Script>
<![CDATA[
   [Bindable] private var passedValue:int;
    protected function init(e:FlexEvent):void{
        passedValue = data.val; 
   }
]]>
</fx:Script>

另外,请注意我将[Bindable]添加到您的passValue var中。 这是因为你想要将它的价值绑定到你的标签上。为了使其工作,您需要在var

上使用[Bindable]