1

タイトルが奇妙に見えるかもしれませんが、次のアプリケーションはFlex3.5で期待どおりに機能しません。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
    <mx:TextInput id='ti'/>
    <mx:Text id='result' text="{ti.text}"/>
</mx:Application>

resultコメントに応じて、質問をより明確にするために、ここでは、バインドメカニズムは入力時にテキストを更新しませんti

4

1 に答える 1

2

生成されたアクションスクリプトをデバッグおよび精査した1日後、問題はText要素の名前であることが判明しました。名前を他の名前に変更すると機能します。生成されたコードを見た後に失敗した理由を知っています-生成されたコードには、ここで宛先名と衝突する内部変数'result'があります。だから、これはうまくいきます。知らせresult1

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
    <mx:TextInput id='ti'/>
    <mx:Text id='result1' text="{ti.text}"/>
</mx:Application>

私の投稿の理由は、このめちゃくちゃな振る舞いをした誰かがグーグルで何か役に立つものを見つけてくれることを願っています!

ここにも質問があります。Flex 4で同じことを試しましたが、同じ誤謬にはなりませんでした。Flex 4は、内部変数名'result'のコードも生成しましたが、幸い、BindingコンストラクターのdestFunctionがnullに設定されていたため、衝突は回避されました。OTOH、Flex3.5では、実際の割り当てを行う無名関数が渡されるresult.text=valueため、コンパイラが混乱します。私の質問は、Flex4に同様の無名関数を生成するように説得できますか(したがって、同じバグがあります)?

于 2013-03-22T17:58:01.953 に答える