从分层数据结构中的子字段计算的父数据

时间:2009-06-17 17:12:37

标签: flex parent-child hierarchical-data

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

我们按照这种模式来做到这一点:

  1. 创建计算父类值的方法,并使其与事件绑定。
  2. 在父级中,为子集合更改时添加事件侦听器。为此,子集合应该是ArrayCollection或类似的。
  3. 当拦截更改事件时,引发(或有条件地提升)附加到步骤1中提到的方法的Bindable元数据的事件。
  4. 这会导致任何正在观看父级聚合属性的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;
        }
    }