私は奇妙なバインディングの問題に遭遇しました。以下のミニアプリケーションでは、 'someText'が変更されたときにFlex Labelコンポーネントが更新されますが、最初の呼び出し後にboundSetterは呼び出されません。基本的なバインディングの問題
要するに、ラベルが更新されている間に、boundSetterSomeText()関数が呼び出されないのはなぜですか?
この基本的な問題に誰かが光を当ててください。感謝万円!
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" minWidth="1024" minHeight="768"
initialize="onInitialize()"
>
<mx:Panel>
<mx:Label text="{this.someText}" />
<mx:Button label="Set random text" click="generateRandom()" />
</mx:Panel>
<mx:Script>
<![CDATA[
import mx.binding.utils.ChangeWatcher;
import mx.binding.utils.BindingUtils;
[Bindable(event="xxx")]
public var someText : String;
public function onInitialize() : void
{
var cw:ChangeWatcher = BindingUtils.bindSetter(boundSetterForSomeText, this, ['someText']);
}
public function generateRandom() : void
{
this.someText = String(Math.round(Math.random() * 10000));
this.dispatchEvent(new Event("xxx"));
}
public function boundSetterForSomeText(obj:Object) : void
{
trace(obj);
}
]]>
</mx:Script>
</mx:Application>
そうですね、設定者は必要ありません。つまり、値を変更したり、好きな機能でイベントをディスパッチしたりすることができます。しかしゲッターを持つことは非常に重要です。 – Tom