Flex:数据绑定手表

时间:2009-03-11 18:25:38

标签: flex flash actionscript-3 data-binding actionscript

鉴于此MXML组件:

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

每当test2.text.length&gt;的值时,如何调度事件? 5个变化?我尝试过ChangeWatcher,BindUtils和PropertyChangeEvent,但没有运气:(

感谢;

[编辑]

从进一步向下复制我的评论:

嗯......我实际上在我自己的TextField组件中使用了一个名为validationResult的新绑定字段。我正在尝试进行原子验证,而不是整个。无论如何。 test2.text.length&gt;每个实例定义了5个条件,所以我不能像那样硬编码。

示例MXML:

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

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

3 个答案:

答案 0 :(得分:1)

为什么不通过test2的change事件中的新事件?

所以你有

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

你不能将“validationResult”定义为带有私有变量的get / set对来保存数据,并且每次使用不同的值调用setter时,变量,设置值,然后调度自己的自定义事件?这是Flex框架中事件调度的大部分完成。