Flex - условие в привязке (для текстового ввода проп. Текст) - PullRequest
2 голосов
/ 26 мая 2011

Например <s:TextInput id="sd" text="{if () {0} else if() {1} else {2}}"/>

Можно ли сделать что-то подобное?

Ответы [ 2 ]

4 голосов
/ 26 мая 2011

Вы можете использовать функцию для реализации вашей логики:

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 )}"/>

Если вы введете «a» или «b» в первом TextInput, значение во втором изменится, чтобы отразить текущее состояние.

1 голос
/ 26 мая 2011

Нет; это слишком сложно для механизма привязки по умолчанию. Но вы не предоставили полное условие, поэтому вам трудно четко указать.

Когда вы реализуете свойство, которое хотите использовать в качестве источника привязки, отправьте событие. Примерно так в методе 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 делает; в принципе; что-то вроде того, что я только что описал. Это немного сложнее; но это суть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...