передача значения из одного представления в другое представление - PullRequest
2 голосов
/ 08 марта 2012

Я очень новичок в actionscript3 / flashbuilder и пытаюсь сделать что-то простое, например передать значение из одного представления в другое.

Я обработал все мои синтаксические ошибки, но все еще получаю ошибку NULL

(Ошибка типа: Ошибка # 1009: не удается получить доступ к свойству или методу ссылки на нулевой объект)

... хотя у меня есть значения, жестко запрограммированные для тестирования.

У меня есть 2 вида, и когда я нажимаю кнопку, она должна передавать значениев другое представление, которое затем отображает переданное значение в метке.

Вот мои два представления:

view1:

<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>

view2:

 <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 Ответ

5 голосов
/ 08 марта 2012

Ваша проблема в том, что вы пытаетесь получить доступ к объекту данных до того, как будет завершено создание представления.

Добавьте обработчик 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.Это потому, что вы пытаетесь привязать его значение к вашему ярлыку.Для того, чтобы это работало, вам нужно использовать [Bindable] на вашем var

...