我有一种方法可以将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会导致更改事件吗?或者,如果用户更改,则更改仅被视为更改?
答案 0 :(得分: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();
}
答案 1 :(得分:2)
有没有办法可以强制树在此时调度更改事件?
使用dispatchEvent()方法。谢谢詹姆斯!