Apache flex 以编程方式触发Flex树控件中的更改事件
我有一个方法可以将XML节点结构添加到当前选定的树节点 这将附加xml,并打开父节点以显示新添加的节点 然后通过设置树的selectedItem来选择节点 我有一个编辑表单,可以在树更改事件中更新其值。当我在这个方法中设置selectedItem时,节点被正确选择,但是更改事件从不触发(因此编辑器不会更新)。我试着在稍后的通话区呼叫它,但没有用 有没有一种方法可以强制树在此时发送更改事件Apache flex 以编程方式触发Flex树控件中的更改事件,apache-flex,actionscript-3,tree,Apache Flex,Actionscript 3,Tree,我有一个方法可以将XML节点结构添加到当前选定的树节点 这将附加xml,并打开父节点以显示新添加的节点 然后通过设置树的selectedItem来选择节点 我有一个编辑表单,可以在树更改事件中更新其值。当我在这个方法中设置selectedItem时,节点被正确选择,但是更改事件从不触发(因此编辑器不会更新)。我试着在稍后的通话区呼叫它,但没有用 有没有一种方法可以强制树在此时发送更改事件 public function addSelected(node:XML):void{
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会导致一个更改事件?或者,只有在用户做出更改时,更改才被视为更改
有没有一种方法可以强制树在此时发送更改事件
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; } );
}
使用dispatchEvent()方法。谢谢你,詹姆斯
有没有一种方法可以强制树在此时发送更改事件
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; } );
}
使用dispatchEvent()方法。谢谢你,詹姆斯 您可以将更改事件处理程序中当前的逻辑移动到单独的函数中,然后直接调用该函数:
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();
}
您可以将更改事件处理程序中当前的逻辑移动到单独的函数中,然后直接调用该函数:
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();
}
实际上是dispatchEvent()方法;)实际上是dispatchEvent()方法;)是的,那肯定行。。我真傻。。正在寻找一个简单问题的复杂答案..是的,那肯定有用。。我真傻。。寻找一个简单问题的复杂答案。。