Flex - 绑定条件(对于TextInput prop.text)

时间:2011-05-26 00:38:58

标签: flash flex actionscript-3

例如<s:TextInput id="sd" text="{if () {0} else if() {1} else {2}}"/>

是否可以做类似的事情?

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绑定语法呢;基本上;就像我刚才描述的那样。它稍微复杂一些;但这就是要点。