2013-02-20 62 views
1

我有2个意见。 这是第1个视图。柔性手机。如何备份数据?

<?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="MTA"> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 
    <fx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 

      import adobe.utils.CustomActions; 

      import data.MTA_Item; 

      [Bindable] 
      public static var actions:ArrayCollection; 
      public var firstItem:MTA_Item; 
      public var secondItem:MTA_Item; 
      public var thirdItem:MTA_Item; 
      public function initItems():ArrayCollection 
      { 
       actions = new ArrayCollection(); 
       firstItem = new MTA_Item(1,"Test","Test note"); 
       secondItem = new MTA_Item(2,"DevCom","My First Notes"); 
       thirdItem = new MTA_Item(3,"Auto" , "BMW"); 
       actions.addItem(firstItem); 
       actions.addItem(secondItem); 
       actions.addItem(thirdItem); 
       return actions; 
      } 
      override public function set data(value:Object):void 
      { 
       if(actions == null) 
       initItems(); 
      } 
     ]]> 


    </fx:Script> 

    <s:VGroup> 

    <s:Label text="was" > 

    </s:Label> 
    </s:VGroup> 
    <s:List id="items" left="0" right="0" top="0" bottom="0" dataProvider="{actions}" change="navigator.pushView(FormDetails, items.selectedItem)"> 
     <s:itemRenderer> 
      <fx:Component> 
       <s:IconItemRenderer label="ID:{data.ID}Name:{data.Name}" /> 
      </fx:Component> 
     </s:itemRenderer> 
    </s:List> 

</s:View> 

第2视图。

<fx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 

      import views.FlexMobileTestAppHomeView; 
      public function list_changeHandler(event:Event):void 
      { 
       var name:String = _namechange.text; 
       var notes:String = _note.text; 
       navigator.pushView(FlexMobileTestAppHomeView,data); 

      } 
      override public function set data(value:Object):void 
      { 

      } 
     ]]> 
    </fx:Script> 
    <s:navigationContent> 
     <s:Button label="Back" 
        click="navigator.popToFirstView()"/> 
    </s:navigationContent> 
    <s:actionContent > 
     <s:Button label="save" click="list_changeHandler(event)" /> 

    </s:actionContent> 

    <s:HGroup verticalAlign="middle" gap="12"> 

     <s:VGroup> 
      <s:HGroup> 
       <s:Label text="Name:" /> 
       <s:TextInput id="_namechange" text="{data.Name}"> 

       </s:TextInput> 
      </s:HGroup> 
      <s:HGroup> 
       <s:Label text="Notes:"/> 
       <s:TextArea id="_note" text="{data.Notes}" /> 


      </s:HGroup> 

     </s:VGroup> 

    </s:HGroup> 

</s:View> 

我需要的数据传送到2 nd.Then我必须编辑“姓名”和“注意事项”和按钮保存必须新数据返回到1-ST视图。我如何从第一视图和编辑中获得“动作”?

回答

1

有很多方法可以在两个组件之间共享数据。我写了这篇关于sharing data between two Flex Components的Flex设备的博客文章;但是我认为你会更适合更具体的东西。

我会考虑这些选项:

  1. 覆盖的createReturnObject方法在第二视图。 More information here。请务必阅读注释,以获取有关访问最近Flex版本中的数据的信息。
  2. 使用支持依赖注入的框架。 RobotLegs和Swiz是我过去使用的两个选项。基本上,创建一个模型对象,其中包含对selectedItem的引用并将其注入到两个视图中。许多人会声称这是最好的方式。
  3. 将选定对象的引用存储在静态变量中;以便您可以在两个视图中引用它。这比1的学习曲线少很多。
  4. 由于您已经在pushView方法中传递了组件的引用,你确定当你回去时参考不会自动更新吗?实际上,两个视图本质上都使用相同的内存引用来获取数据。不过,您可能必须刷新列表才能找到所做的更改。或者我可能在这个错误。