我正在开发一个Flex 3项目,我正在使用一对XMLListCollection来管理组合框和数据网格。
组合框件工作正常。这个XMLListCollection是静态的。用户选择一个项目,然后在“更改”时,它会向第二个集合触发addItem()。第二个集合的datagrid然后显示更新的列表,一切都很好。
但是,数据网格是可编辑的。更复杂的是我有另一个事件处理程序绑定到第二个XMLLIstCollection的“更改”事件,在该处理程序中,我确实对第二个列表进行了其他更改。这实际上导致第二个列出“更改”处理程序的无限循环(堆栈溢出:D)。
我不确定如何处理这个问题。搜索提出了一个或两个关于AutoUpdate功能的想法,但我无法从中获得太多。特别是,一旦我重新启用,行为仍然存在,执行'更新',所以我想我可能做错了。我希望更新能够在一般情况下运行,而不是在代码块期间运行。
感谢您的帮助!
答案 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 );
}