Flex: часы с привязкой к данным - PullRequest
0 голосов
/ 11 марта 2009

Учитывая этот компонент MXML:

<mx:TextBox id="test" text="{test2.text.length &gt; 5}" />

Как получить событие, отправляемое при изменении значения test2.text.length> 5? Я пробовал ChangeWatcher, BindUtils и PropertyChangeEvent, но не повезло: (

Спасибо;

[EDIT] * * +1010

Копирование моих комментариев внизу:

Ну ... на самом деле я использую новое связываемое поле в своем собственном компоненте TextField, называемое validationResult. Я пытаюсь сделать атомарные проверки вместо всего. Тем не мение. условие test2.text.length> 5 определяется для каждого экземпляра, поэтому я не могу жестко закодировать его таким образом.

Пример MXML:

<nui:NewTextInput id="mensualDeclarado2" validationResult="{mensualDeclarado3.text.length >= 5 && mensualDeclarado3.text.length <= 10)}" />

<nui:NewTextInput id="mensualDeclarado3" text="1234567890" />

Ответы [ 3 ]

1 голос
/ 11 марта 2009

Почему бы не через новое событие в событии изменения test2?

так что у вас есть

 private var _lengthCheck:Boolean = false;
 function test2_ChangeHandler(event:Event):void
 {
     if (_lengthCheck != (test2.text.length > 5))
     {
         _lengthCheck = (test2.text.length > 5);

         if (test2.text.length > 5)
             dispatch(new Event("LENGTH_GREATER_THAN_5"));
         else
             dispatch(new Event("LENGTH_LESS_THAN_5"));
     }
 }
0 голосов
/ 16 марта 2009

Не можете ли вы определить «validationResult» как пару получения / установки с закрытой переменной для хранения данных, и каждый раз, когда метод вызова вызывается с другим значением, чем переменная, задайте значение, а затем отправьте свой собственный пользовательский событие? Именно так выполняется большая часть диспетчеризации событий в среде Flex.

0 голосов
/ 12 марта 2009
<mx:Script>
<![CDATA[
   private var _test2 : String = "test2.text.length &gt; 5";

   public function set test2( _test2 : String ) : void{
      dispatchEvent(new Event("test2CHANGED"));
      this._test2 = _test2;
   }
]]>
</mx:Script>
<mx:TextBox id="test" text="{_test2}" />
...