我遇到了一个奇怪的绑定问题。在下面的迷你应用程序中,当'someText'发生更改时,Flex Label组件会更新,但在第一次初始调用后,我的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>
答案 0 :(得分:0)
当事件是默认时它确实有效。 (默认事件是propertyChange)
[Bindable]
public var someText : String;
我做了一些调试,我不知道为什么它不适用于自定义事件。我认为应该。
答案 1 :(得分:0)
您可以使用此代码创建get / set对或“property”:
private var _someText:String;
[Bindable(event="xxx")]
public function get someText():String
{
return _someText;
}
public function set someText(value:String):void
{
if (_someText != value)
{
_someText = value;
this.dispatchEvent(new Event("xxx"));
}
}