1

コールアウトを使用して名前の変更を許可したいと思います。コールアウトには、バインディングを介して入力される te​​xtInput (コンポーネントに埋め込まれている) が含まれています。吹き出しは毎回異なるテキストで開かれます。残念ながら、バインド データに書き込むことができるものは何でも、最初のテキストのみが毎回表示されます。サンプルを添付しました。

コールアウトが閉じたときにコンポーネントがビューにアタッチされ、コールアウトに再アタッチされると、textinput が正しく更新されることに気付きました。

どんな助けでも大歓迎です。

<?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="TestChgCallout2"
creationComplete="init()"
>

<fx:Declarations>
    <s:Callout id="COrename"/>
    <fx:Component className="Rename">
        <s:VGroup>          
            <fx:Metadata>
                [Event(name="cancel", type="flash.events.Event")]
                [Event(name="updated", type="flash.events.Event")]
            </fx:Metadata>

            <fx:Script>
            <![CDATA[
                [Bindable] private var _nom:String="";
                private var _NewName:String="";

                public function set nom(s:String):void {
                    _nom=s;
                    _NewName="";
                }

                public function get nom():String {
                    return _NewName;
                }

                private function doUpd():void {
                    var req:XML=<req><oldName></oldName><newName></newName></req>;
                    req.oldName = _nom;
                    req.newName = Nom.text;
                    _NewName=Nom.text;
                    this.dispatchEvent(new Event('updated'))
                }
            ]]>
            </fx:Script>


            <s:HGroup verticalAlign="middle">
                <s:Label width="90" text="Nom" verticalAlign="middle"/>
                <s:TextInput id="Nom" text="{_nom}" width="201" maxChars="23" restrict="a-z A-Z0-9" />
            </s:HGroup>
            <s:HGroup width="100%" verticalAlign="middle" horizontalAlign="center">
                <s:Button label="cancel" click="this.dispatchEvent(new Event('cancel'))"/>
        <s:Button label="update" click="doUpd()"/>
            </s:HGroup>
        </s:VGroup>
    </fx:Component>
</fx:Declarations>


<s:HGroup gap="5">
    <s:VGroup>
    <s:Label text="{'Count:' + i.toString()}" />
    <s:Label text="{'result:' + _res}" />
    </s:VGroup>
         <s:Button id="Bt" label="call" click="doCall()" />
</s:HGroup>

<fx:Script>
<![CDATA[
        [Bindable] private var i:int=0;
        private var renPlan:Rename = new Rename();
        [Bindable] private var _res:String="";

        private function init():void {
            renPlan.addEventListener("cancel", onPlanUpdCancel);
            renPlan.addEventListener("updated", onPlanUpdated);
            COrename.addElement(renPlan);
        }

        private function doCall():void {
            if (COrename.isOpen) {
                COrename.close();
            } else {
                renPlan.nom = "test #"+i.toString();
                COrename.open(Bt, false);
            }
        }

        private function onPlanUpdCancel(e:Event):void {
            i++;
            COrename.close();
        }

        private function onPlanUpdated(e:Event):void {
            i++;
            _res = renPlan.nom;
            COrename.close();
        }
    ]]>
    </fx:Script>

</s:View>
4

1 に答える 1

0

これらの場合の通常の提案を試しましたか?スキンを変更しますか?

<s:TextInput skinClass="spark.skins.mobile.TextInputSkin" id="Nom" 
text="{_nom}" width="201" maxChars="23" restrict="a-z A-Z0-9" />
于 2012-11-21T08:43:28.987 に答える