2009-12-11 7 views
2

나는 사용자 정의 ActionScript 클래스가 있습니다플렉스 3 바인딩 문제

package EntityClasses 
{ 
import mx.collections.ArrayCollection; 


[RemoteClass(alias="tkatva.tt.entities.CompanyInfo")] 
[Bindable] 
public class CompanyInfo 
{ 
     public var companyInfoId:int; 
     public var companyName:String; 
     public var streetAddress:String; 
     public var postNumber:String; 
     public var city:String; 
     public var country:String; 
     public var email:String; 
     public var businessIdentityCode:String; 
     public var intBic:String; 
     public var homepageUrl:String; 
     public var lastUpdatedBy:String; 
     public var lastUpdateDate:Date; 
     public var version:int; 
     public var settingGroupList:ArrayCollection; 
     public var bankAccountList:ArrayCollection; 
     public var personList:ArrayCollection; 


} 
} 

을 그리고, 텍스트 상자에이 값을 바인딩 할 있도록 할 때 너무 클래스에 채워되어있는 텍스트 상자에 사용자 유형의 정보를 제공합니다. 예를 들어, [Bindable]로 클래스를 표시하면 값을 텍스트 상자에 바인딩 할 수 있도록 Flex 3는 양방향입니까?

이 내가 클래스를 결합하려고하는 내 MXML 파일입니다

import mx.rpc.events.ResultEvent; 
     import EntityClasses.CompanyInfo; 

     [Bindable] 
     public var company:CompanyInfo; 



     public var uuid:String; 

     private function init():void { 
      company = new CompanyInfo(); 
     } 

     private function getCompanyInfo():void { 
      try { 
       company = TtRo.getCompanyInfo(uuid); 

      } catch (Exception) { 

      } 
     } 

     private function handleClick():void { 
      this.txtInfo.text = "COMPANY:" + company.companyName; 


      TtRo.addCompanyInfo(company,uuid); 

     } 

     private function handleAdding(e:ResultEvent):void { 
      var res:Boolean; 
      res = e.result as Boolean; 
      if (res) { 
       this.txtInfo.text = "OK"; 
      } else { 
       this.txtInfo.text = "NOTOK"; 
      } 
     } 

    ]]> 
</mx:Script> 
<mx:TextInput x="194" y="10" id="txtCname" text="{company.companyName}"/> 
<mx:TextInput x="194" y="40" id="txtStreet" text="{company.streetAddress}"/> 
<mx:TextInput x="194" y="70" id="txtPostnumber" text="{company.postNumber}"/> 
<mx:TextInput x="194" y="100" id="txtCity" text="{company.city}"/> 
<mx:TextInput x="194" y="130" id="txtCountry" text="{company.country}"/> 
<mx:TextInput x="194" y="160" id="txtEmail" text="{company.email}"/> 
<mx:TextInput x="194" y="190" id="txtBic" text="{company.businessIdentityCode}"/> 
<mx:TextInput x="194" y="220" id="txtIntBic" text="{company.intBic}"/> 
<mx:TextInput x="194" y="250" id="txtUrl" text="{company.homepageUrl}"/> 

무슨 잘못이와? flex 컴파일러는 다음과 같은 경고 메시지를 표시합니다. 데이터 바인딩은 "회사"에 대한 할당을 감지하지 못합니다. 데이터 바인딩 플렉스

[Bindable]public var companyInfoId:int; 

에 오신 것을 환영합니다, 그 사랑 : Flex와 appriciated 것입니다 도움이 ... 덕분에 새로운

임 ...

답변

-1

당신은 바인딩과 변수 자신을 표시해야 :)

+0

-1에서 작업의 종류에 대한 조리법을 많이했다. public 클래스 정의 전에'[Bindable]'메타 데이터 태그는 변수로 정의한 모든 public 속성과 setter 메서드와 getter 메서드를 사용하여 정의한 모든 public 속성을 바인딩 표현식의 원본으로 사용할 수 있습니다. http://livedocs.adobe.com/flex/3/html/help.html?content=databinding_8.html – Amarghosh

+0

Ahh did spot that :( 그리고 ItemRenders와 마찬가지로 양방향으로 바인딩 할 수 있다고 가정했습니다. {}이 (가)있는 텍스트 상자에 직접 입력하십시오. 캔트처럼 보입니다! – Jammin

3

아니요, Flex 데이터 바인딩이 양방향이 아닙니다. 당신은 당신이 바인딩 역을 추가하는 경우 명시 적으로 더 읽을 수 있습니다 MXML 구성 요소에서 사용하는 경우 BindingUtils.bindProperty()

private function init():void 
{ 
    company = new CompanyInfo(); 
    BindingUtils.bindProperty(company, "companyName", this ["txtCname", "text"]); 
} 
3

사용하여 다시 company 개체의 해당 속성에 텍스트 필드의 text 속성을 결합해야 하나의 장소에서 mx : Bindable 태그를 사용합니다.

예 :

<mx:Binding destination="company.companyName" source="txtCname.text" /> 
    <mx:Binding destination="company.streetAddress" source="txtStreet.text" /> 
    ... 
    etc. 
0

플렉스 3 요리 책는 장 11.9 & 채널 (14)