Apache flex 检测Flex表单元素的更改(textinput、textarea、combobox、checkbox..)

Apache flex 检测Flex表单元素的更改(textinput、textarea、combobox、checkbox..),apache-flex,actionscript-3,events,actionscript,flex3,Apache Flex,Actionscript 3,Events,Actionscript,Flex3,我的应用程序中有各种(阅读了很多…)flex表单,现在我想创建一个系统,通过该系统,如果用户修改表单中的任何内容,就会通知用户尚未保存 现在。。我不想重写我所有的表格。。有什么好方法可以实现这一点吗? 以某种方式扩展TextInput(和其他..)类 谢谢您可以进入TextInput类(和其他类)并添加事件侦听器和函数,但是您可能会更改SDK本身,这是一个坏主意。我将创建自定义类来扩展您使用的类,并进行查找/替换以加快速度。这并不是经过深思熟虑的,但应该是可行的 您可以创建一个自定义组件,我们称

我的应用程序中有各种(阅读了很多…)flex表单,现在我想创建一个系统,通过该系统,如果用户修改表单中的任何内容,就会通知用户尚未保存

现在。。我不想重写我所有的表格。。有什么好方法可以实现这一点吗? 以某种方式扩展TextInput(和其他..)类


谢谢

您可以进入TextInput类(和其他类)并添加事件侦听器和函数,但是您可能会更改SDK本身,这是一个坏主意。我将创建自定义类来扩展您使用的类,并进行查找/替换以加快速度。

这并不是经过深思熟虑的,但应该是可行的

您可以创建一个自定义组件,我们称之为FormWatcher,您可以将它放在表单旁边。表单观察者要做的是等待表单中的CreationComplete事件

现在,我们已经准备好表单,您可以使用表单的getChildren()方法获取表单中的所有表单项。然后查看它们的内部,您将获得文本输入、组合框等,您可以在其中添加事件侦听器(作为单独的组件),例如

只要将此代码粘贴到某个表单旁边,并调用startWatching(nameOfYourForm),您就会看到正在调用changeHandler

还有几点注意:

1) 完成后,应该清理事件侦听器

2) 我将从中创建一个组件,以便您可以像这样使用它:

<mx:Form id="form1" >
[...]
</mx:Form>

<FormWatcher form="{form1}"  />

[...]
其中FormWatcher将有一个名为“clean”的布尔变量

3) 该示例非常简单,因此仅适用于与此类似的表单:

<mx:Form id="myForm" >
    <mx:FormItem>
        <mx:TextInput id="someComponent1" />
    </mx:FormItem>
    <mx:FormItem>
        <mx:CheckBox id="someComponent2" />
    </mx:FormItem>
    <mx:FormItem>
        <mx:TextArea id="someComponent3"  />
    </mx:FormItem>      
</mx:Form>

<mx:Form id="myForm" >
    <mx:FormItem>
        <mx:TextInput id="someComponent1" />
    </mx:FormItem>
    <mx:FormItem>
        <mx:CheckBox id="someComponent2" />
    </mx:FormItem>
    <mx:FormItem>
        <mx:TextArea id="someComponent3"  />
    </mx:FormItem>      
</mx:Form>