2013-02-20 61 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方法中傳遞了組件的引用,你確定當你回去時參考不會自動更新嗎?實際上,兩個視圖本質上都使用相同的內存引用來獲取數據。不過,您可能必須刷新列表才能找到所做的更改。或者我可能在這個錯誤。