例如<s:TextInput id="sd" text="{if () {0} else if() {1} else {2}}"/>
是否可以做类似的事情?
答案 0 :(得分:4)
您可以使用函数来实现您的逻辑:
private function foo( value : String = "" ) : int
{
if ( value == 'a')
{
return 0;
}
else if ( value == 'b' )
{
return 1;
}
else
{
return 2;
}
}
然后:
<s:TextInput id="source" text=""/>
<s:TextInput id="sd" text="{foo( source.text )}"/>
如果在第一个TextInput中键入“a”或“b”,则第二个中的值将更改以反映当前状态。
答案 1 :(得分:1)
没有;这对于默认绑定机制来说太复杂了。但是,你没有提供完整的条件,因此很难明确地指导你。
当您实现要用作绑定源的属性时,请调度一个事件。在set方法中有这样的东西:
public function set myBindableProperty(value:something):void{
_myBindableProperty = value;
dispatchEvent(new Event('myBindablePropertyChanged'));
}
然后添加一个事件监听器:
myComponentWithBindableProperty.addEventListener('myBindablePropertyChanged', onmyBindablePropertyChanged);
最后,在事件处理程序
中执行绑定操作public function onmyBindablePropertyChanged(event:Event):void{
if(){
sd.text = 0;
} else if(){
sd.text = 1;
} else {
sd.text = 2;
}
}
内部; MXML绑定语法呢;基本上;就像我刚才描述的那样。它稍微复杂一些;但这就是要点。