1

我有一种方法可以将 XML 节点结构添加到当前选定的树节点。

这会附加 xml,并打开父节点以显示新添加的节点。

然后我通过设置树的 selectedItem 来选择节点。

我有一个编辑表单,可以在树更改事件上更新其值。当我在此方法中设置 selectedItem 时,节点被正确选择但更改事件永远不会触发(因此编辑器不会更新)。我试图在稍后的调用块中调用它无济于事。

有没有办法可以强制树在此时分派更改事件?

public function addSelected(node:XML):void{

            tree_expandItem(false);             

            var selectedItem:XML = tree.selectedItem as XML;

            selectedItem.appendChild(node);

            tree_expandItem(true);

            callLater(function():void { tree.selectedItem = node; } );  

        }

以一般的方式扩展这个问题 - 我会认为更改树的 selectedItem 会导致更改事件?还是仅在用户做出更改时才被视为更改?

4

2 回答 2

3

您可以将当前在您的更改事件处理程序中的逻辑移动到一个单独的函数,然后直接调用该函数:

private function changeHandler(event:ListEvent):void
{
    doChangeLogic();
}

private function doChangeLogic():void
{
    //statements
}

public function addSelected(node:XML):void
{
    tree_expandItem(false);                         

    var selectedItem:XML = tree.selectedItem as XML;

    selectedItem.appendChild(node);

    tree_expandItem(true);

    callLater(function():void { tree.selectedItem = node; } );

    doChangeLogic();
}
于 2009-02-18T14:24:56.233 回答
2

有没有办法可以强制树在此时分派更改事件?

使用 dispatchEvent() 方法。谢谢詹姆斯!

于 2009-02-18T06:31:29.613 回答