在视图之间维护新的和已存在的数据

时间:2013-06-08 05:53:30

标签: actionscript-3 flex flex4.7

基本上,当我将数据从一个视图传递到另一个视图时,我需要知道如何创建另一个textInput字段,同时保存传递给的数据。看看:

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

    <fx:Script>
        <![CDATA[
            protected function btn_addTask_clickHandler(event:MouseEvent):void
            {
                var tmpObj:Object = new Object(); 
                tmpObj.firstTask = ti_input.text; 
                navigator.pushView(taskListView, ti_input.text); 
            }
        ]]>
    </fx:Script>

    <fx:Declarations>
        <!-- Place nonvisual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <s:VGroup height="100%" width="100%" >
        <s:TextInput id="ti_input" prompt="Enter Text Here" /> 
        <s:Button label="Add Task" id="btn_addTask" click="btn_addTask_clickHandler(event)"/>
    </s:VGroup>

</s:View>

这是我的第一个观点。我希望用户能够在textInput字段中输入文本并在下一个视图中看到它,但我希望下一个视图保存用户输入的内容,导航回第一个视图,然后从用户那里获取另一个条目,在第二个视图上创建另一个textInput字段。这就像一个便笺簿应用程序。用户在第一个视图上输入任务,然后他或她就能在第二个视图上看到它。然后,用户应该能够导航回第一个视图并创建另一个也进入第二个视图的任务,但不会替换输入的第一个任务。我的问题是当新数据进入第二个视图时创建新的textInput字段。有任何想法吗?也许textInput字段不是我应该使用的可视组件......

1 个答案:

答案 0 :(得分:0)

我不确定您是否正在搜索双向同步,或者只有一个视图应该显示在另一个视图中所做的更改。

但无论如何,由于你在弹出实际视图(从第二个视图回到第一个视图)时不会发回数据,你可以实现另一种方法: 每当其中一个视图添加/删除/编辑一个值时,视图本身就会将该值存储在另一个可供视图访问的类中(如果需要,可以是单例)。并且每次加载一个视图(view_activated handler)只需从第三个类加载该值。

为了将该值存储在该分离的类中,如果可以从两个视图访问,则可以直接在其中编写它。或者您可以发送一个自定义事件,其中包含将由您的分离类监听的数据以存储它。