2013-02-20 3 views
1

나는 2 개의 전망이있다. 이것은 1 차보기입니다.flex 모바일. 어떻게 데이터를 되돌릴 수 있습니까?

<?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-nd view.

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

나는 내가 "이름"및 "메모"버튼 1 일보기에 새 데이터를 반환해야합니다 저장을 편집해야합니다 2 nd.Then에 데이터를 전달해야합니다. 어떻게하면 1st 뷰에서 "액션"을 얻을 수 있고 편집 할 수 있습니까?

답변

1

두 구성 요소간에 데이터를 공유하는 데는 여러 가지 방법이 있습니다. 나는 sharing data between two Flex Components에 대한 플렉스 시설에 관한이 블로그 포스트를 썼다. 그러나 나는 당신이 가장 구체적인 것에 더 적합 할 것이라고 생각합니다.

나는이 옵션으로보고 싶은데 :

  1. 재정의 두 번째보기에서 createReturnObject 방법을. More information here. 최근 Flex 버전의 데이터 액세스에 대한 정보는 주석을 읽으십시오.
  2. 종속성 삽입을 지원하는 프레임 워크를 사용하십시오. RobotLegs와 Swiz는 내가 과거에 사용한 두 가지 옵션입니다. 기본적으로 selectedItem에 대한 참조를 포함하는 모델 객체를 생성하여 두 뷰에 모두 삽입합니다. 많은 사람들이 이것이 최선의 방법이라고 주장합니다.
  3. 선택한 개체에 대한 참조를 정적 변수에 저장합니다. 두보기 모두에서이를 참조 할 수 있습니다. 숫자 1보다 학습 곡선이 훨씬 적습니다.
  4. pushView 메서드의 구성 요소에 대한 참조를 이미 전달하고 있으므로; 돌아갈 때 참조가 자동으로 업데이트되지 않는 것이 확실합니까? 실제로 두보기는 본질적으로 동일한 메모리 참조를 사용하여 데이터를 가져옵니다. 목록을 새로 고쳐야 변경 사항을 확인할 수 있습니다. 아니면 내가 잘못 할 수 있습니다.
관련 문제