2009-11-21 9 views
1

저는 Flex 3 프로젝트에서 작업 중이며, 한 쌍의 XMLListCollection을 사용하여 콤보 상자와 데이터 격자를 관리하고 있습니다.XMLListCollection의 스택 오버플로 collectionEvent

콤보 조각이 완벽하게 작동합니다. 이것에 대한 XMLListCollection은 정적입니다. 사용자가 항목을 선택하고 "변경"시 addItem()을 두 번째 모음으로 시작합니다. 그런 다음 두 번째 컬렉션의 DataGrid에 업데이트 된 목록이 표시되고 모두 잘됩니다.

그러나 데이터 격자를 편집 할 수 있습니다. 더 복잡한 것은 두 번째 XMLLIstCollection의 "change"이벤트에 바인딩 된 다른 이벤트 핸들러가 있고 그 핸들러에서 두 번째 목록을 추가로 변경한다는 것입니다. 이것은 본질적으로 무한 루프 (스택 오버플로 : D), 두 번째 목록 "변경"처리기의 원인이됩니다.

나는 이것을 어떻게 처리해야할지 모르겠습니다. 검색은 AutoUpdate 기능과 관련하여 두 가지 아이디어를 제시했지만 그 중 많은 부분을 얻을 수는 없었습니다. 특히, 동작이 지속되면 다시 활성화 할 때 '업데이트'를 실행하므로 내가 잘못했을 수도 있습니다. 일반적으로 코드 블록을 실행하는 동안 업데이트를 실행하고 싶습니다.

도움 주셔서 감사합니다.

답변

0

CHANGE 이벤트가 아닌 사용자 지정 이벤트에 동작을 바인딩하려고합니다.

e.e. 지금하고있는 일을 처리하고 작업을 수행 할 사용자 지정 이벤트를 처리하고 처리합니다.

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); 
} 
+0

유망 해 보입니다. 나는 그것을 시험해보고 싶어한다. 감사 – reidLinden