Я просто столкнулся с проблемой странного связывания. В мини-приложении ниже компонент Flex Label обновляется, когда изменяется «someText», но мой метод boundSetter не будет вызываться после первого начального вызова.Фундаментальная проблема с привязкой
Вкратце: почему функция boundSetterForSomeText() не вызывается, а метка обновляется?
Может ли кто-нибудь пролить свет на этот фундаментальный вопрос? Бесконечно благодарен!
<?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