我目前正在对一组 spark 表单元素使用数据绑定,并想知道我绑定的数据类是否脏。
如果火花“表单”元素会触发一个冒泡并被火花“表单”捕获的更改事件,那可能会很好。然后我可以在表单中添加一个事件监听器。但我没有看到类似的东西。
因此,除了将原始数据类的副本与绑定的数据类进行比较或向每个表单元素添加更改事件并捕获该事件之外,还有什么简单的方法可以知道类对象已更改?
我目前正在对一组 spark 表单元素使用数据绑定,并想知道我绑定的数据类是否脏。
如果火花“表单”元素会触发一个冒泡并被火花“表单”捕获的更改事件,那可能会很好。然后我可以在表单中添加一个事件监听器。但我没有看到类似的东西。
因此,除了将原始数据类的副本与绑定的数据类进行比较或向每个表单元素添加更改事件并捕获该事件之外,还有什么简单的方法可以知道类对象已更改?
扩展 TextInput 或表单中包含的任何其他输入元素,然后在组件创建中完成注册更改事件的侦听器,在处理程序中调度冒泡事件,然后在包含表单的文档中使用您的自定义元素并通过 AS3 将侦听器添加到您调度的事件的表单中,并在该点停止它的传播。
否则,我认为您对每个更改处理程序的第二个解决方案都不会太糟糕。如果表单中有很多元素或者它是动态的,您可以编写一个函数来遍历表单的表单项并检查它们的子项,那么您只需要编写一个处理每种类类型的开关(您可以使用http ://www.actionscriptdeveloper.co.uk/getting-the-class-of-an-object-in-as3/在每个子元素上确定它是什么类型,然后如果它是 TextInput 或任何注册适当的事件来调用你常用的函数,只要确保它有一个通用事件作为它的参数,因为所有其他事件都将是它的子类)。
据我所知,没有简单的方法可以从 ArrayCollection 或其他包装器 ListCollectionView 数据结构中侦听对基础数据的更改。部分问题是添加集合的元素不需要实现任何类型的接口以允许注册侦听器。也就是说,数据元素不一定是事件调度程序,将此信息传达给 List 的唯一其他方式是,如果数据元素在包含该元素的所有列表上都有句柄,并且它们将列表上的某些内容标记为设置任何属性时指示“脏”。这些都可以在语言的限制内实现,但不是