【问题标题】:parent data calculated from children fields in hierarchical data structure从分层数据结构中的子字段计算的父数据
【发布时间】:2009-06-17 17:12:37
【问题描述】:

在 flex 3 中,我有一个分层数据结构。我想在树中显示它的内容。我的问题是我有从子节点计算数据的节点。如果子节点的数据发生更改,如何构建层次结构以自动更改这些父节点? 例如:

  • 每个节点都有一个警告标志。如果某些子警告标志更改为 true,则父警告标志应自动更改设置为 true。
  • 节点整数字段是子整数字段的总和,如果任何子整数字段发生变化,父整数字段会立即“计算”总和。

是否有一个简单的解决方案可以自动发生良好的结构更改,或者我必须制作一些自定义函数?

谢谢!

【问题讨论】:

    标签: apache-flex parent-child hierarchical-data


    【解决方案1】:

    我们遵循以下模式:

    1. 在父类上创建计算值的方法,并使其可绑定事件。
    2. 在父级中,添加一个事件侦听器,用于子级集合更改时。为此,子集合应该是 ArrayCollection 或类似的。
    3. 拦截更改事件时,为步骤 1 中提到的方法引发(或有条件地引发)附加到可绑定元数据的事件。

    这应该会导致任何正在监视父级聚合属性的 UI 在子级更新时更新。

    这是一个例子:

    public class Parent
    {
        private var children:ArrayCollection = new ArrayCollection();
    
        public function Parent()
        {
            children.addEventListener(
                CollectionEvent.COLLECTION_CHANGE, 
                function(evt:CollectionEvent):void
                {
                    if (...)
                    {
                        dispatchEvent(new Event("warningStateChanged"));
                    }
                }
            );
        }
    
        [Bindable("warningStateChanged")]
        public function containsWarnings():Boolean
        {
            for each (var child:Child in children)
            {
                if (child.hasWarning)
                {
                    return true;
                }
            }
            return false;
        }
    }
    

    【讨论】:

    • 非常感谢。我还提出了解决方案,需要在儿童的集合更改事件上创建一个带有侦听器的自定义节点类型。
    猜你喜欢
    • 2011-01-21
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    相关资源
    最近更新 更多