【问题标题】:Easy way to tell if data is dirty判断数据是否脏的简单方法
【发布时间】:2011-08-05 20:24:58
【问题描述】:

我目前正在对一组 spark 表单元素使用数据绑定,想知道我绑定的数据类是否脏。

可能如果火花“表单”元素会触发一个更改事件,该事件会冒泡并被火花“表单”捕获。然后我可以在表单中添加一个事件监听器。但我没有看到类似的东西。

因此,除了将原始数据类的副本与绑定的数据类进行比较或向每个表单元素添加更改事件并捕获该事件之外,还有什么简单的方法可以知道类对象已更改?

【问题讨论】:

    标签: apache-flex binding flex-spark dirty-data


    【解决方案1】:

    扩展 TextInput 或表单中的任何其他输入元素,然后在组件创建中完成注册更改事件的侦听器,在处理程序中调度冒泡事件,然后在包含表单的文档中使用您的自定义元素并通过 AS3 将侦听器添加到您调度的事件的表单中,并在此时停止它的传播。

    否则,我认为您对每个更改处理程序的第二个解决方案都不会太糟糕。如果表单中有很多元素或者它是动态的,则可以编写一个函数来遍历表单的表单项并检查它们的子项,那么您只需要编写一个处理每种类类型的开关(您可以使用 @ 987654321@ 每个子元素来确定它是什么类型,然后如果它是 TextInput 或任何注册适当的事件来调用常用函数,只要确保它有一个通用事件作为它的参数,因为所有其他事件都将是子- 类)。

    据我所知,没有简单的方法可以从 ArrayCollection 或其他包装器 ListCollectionView 数据结构中侦听对基础数据的更改。部分问题是添加集合的元素不需要实现任何类型的接口以允许注册侦听器。也就是说,数据元素不一定是事件调度程序,将此信息传达给 List 的唯一其他方式是,如果数据元素在包含该元素的所有列表上都有句柄,并且它们将列表上的某些内容标记为设置任何属性时指示“脏”。这些都可以在语言的限制下实现,但并非开箱即用,因为它们的使用可能受到限制,并且在其他情况下可能会不必要地增加 ListCollectionView 的 CPU 使用率。

    【讨论】:

    • 抱歉花了这么长时间,我只是想了解这一切是如何运作的。感谢您的回答。
    • 没问题,完全忘记写这个答案了,看起来我有点抽象,因为你的问题表达得很好,所以我认为你已经对 Flex 有了很好的理解。无论如何,如果您仍然不理解我在这里写的内容,或者希望我重新措辞/详细说明,请随时提问。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 2016-03-20
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 2011-06-17
    • 2012-09-03
    相关资源
    最近更新 更多