2

カスタムActionScriptクラスがあります:

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;


}
}

そして、これらの値をtextBoxesにバインドして、ユーザーがtextBoxesに情報を入力すると、その情報もクラスに入力されるようにします。Flex 3は双方向なので、クラスを[Bindable]でマークすると、たとえば値をテキストボックスにバインドできますか?

これは、クラスをバインドしようとする私の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は初めてで、どんな助けでも適用されます...ありがとう...

4

4 に答える 4

3

いいえ、Flex データ バインディングは双方向ではありません。BindingUtils.bindProperty()textを使用して、テキスト フィールドのプロパティをcompanyオブジェクトの対応するプロパティに明示的にバインドする必要があります。

private function init():void 
{
    company = new CompanyInfo();
    BindingUtils.bindProperty(company, "companyName", this ["txtCname", "text"]);
}
于 2009-12-11T10:30:15.803 に答える
3

MXML コンポーネントで使用している場合は、mx:Bindable タグを使用してリバース バインディングを 1 か所に追加すると、読みやすくなる可能性があります。

例えば。

    <mx:Binding destination="company.companyName"   source="txtCname.text" />
    <mx:Binding destination="company.streetAddress" source="txtStreet.text" />
    ...
    etc.
于 2009-12-11T10:36:09.553 に答える
0

Flex 3 Cookbookの 11.9 章と 14 章に、この種の作業のレシピがたくさんあります。

于 2009-12-11T17:57:53.497 に答える
-1

変数自体をバインド可能としてマークする必要があります。

[Bindable]public var companyInfoId:int;

Flex データバインディングへようこそ。素敵です :)

于 2009-12-11T10:17:43.660 に答える