XMLListCollection collectionEvent上的堆栈溢出

时间:2009-11-21 19:39:08

标签: flex collections events auto-update

我正在开发一个Flex 3项目,我正在使用一对XMLListCollection来管理组合框和数据网格。

组合框件工作正常。这个XMLListCollection是静态的。用户选择一个项目,然后在“更改”时,它会向第二个集合触发addItem()。第二个集合的datagrid然后显示更新的列表,一切都很好。

但是,数据网格是可编辑的。更复杂的是我有另一个事件处理程序绑定到第二个XMLLIstCollection的“更改”事件,在该处理程序中,我确实对第二个列表进行了其他更改。这实际上导致第二个列出“更改”处理程序的无限循环(堆栈溢出:D)。

我不确定如何处理这个问题。搜索提出了一个或两个关于AutoUpdate功能的想法,但我无法从中获得太多。特别是,一旦我重新启用,行为仍然存在,执行'更新',所以我想我可能做错了。我希望更新能够在一般情况下运行,而不是在代码块期间运行。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

尝试将行为绑定到自定义事件而不是CHANGE事件。

即。做你现在正在做的事情,但是派遣和处理一个自定义事件来完成工作。

答案 1 :(得分:0)

你考虑过使用callLater吗? 直接操作XMLListCollection的源XMLList是否具有相同的结果? 你考虑过这样的事情:

private function changeHandler( event:Event ):void
{
    event.target.removeEventListener( event.type, changeHandler );

    // your code here.

    event.target.addEventListener( event.type, changeHandler );
}