자식을 생성 할 때 자체 리플렉션을 통해 버블 링 이벤트 (CHILD_CREATED)를 전달하도록하면이 문제를 해결할 수 있습니다. 그런 다음 유효한 값 집합에 액세스 할 수있는 객체에서 CHILD_CREATED 이벤트를 수신 대기하기 만하면됩니다. 아이가 생성 될 때 알고 리스너를 추가하고 값
2 아이가 생성 #에에 refrence 필요 - -
# 1 부모가 생성되는 등의 자기에 refrence로 CHILD_CREATED 동적 이벤트를 전달을 속성
# 3 부모가 듣습니다. CHILD_CREATED - 하위 구성 요소에 대한 참조를 추출하고 해당 데이터 공급자를 유효한 값 집합으로 설정합니다.
는
편집 : 당신이 DATAGROUP에 따라 구성 요소를 처리하는 경우 이런 종류의 문제를 처리 할 수
훨씬 깨끗한 방법은 rendererAdd이 (경우에 렌더러에에 refrence가) 사용하는 것입니다. 이것은 정확히을 처리 할 표준 방법 일 것입니다.
데이터 그룹을 사용하여 직접 액세스해야하는 구성 요소를 표시하려면 rendererAdd 이벤트 만 사용하면됩니다. 해당 문제에 적용 할 수없는 경우, 나는 CHILD_CREATED 메서드를 사용합니다.
일반적인 경우에는 작동하지 않는 이유는 기본적으로 "필요한 경우"구성 요소가 데이터를 필요로하는 동적으로 생성 된 구성 요소의 전체 트리 아래에 원하는 모든 정보를 전달해야하기 때문입니다. Haemp의 대답은 클라이언트가 부모에게 필요한 데이터를 요청할 수있는 메커니즘을 제공합니다. FWIW, 나의 초기 순진한 해결책은 내가 데이터를 가지고있는 클래스를 찾고있는 containment tree를 걷는 것이었다. 그것은 빠르고 더럽고, 일을하며, 우아함이 전혀 없습니다. 그것은 또한 캡슐화를 심각하게 깨뜨린다. –
팩토리를 만들면 요소를 포함 트리 아래로 전달할 필요가 없으며 캡슐화도 중단되지 않습니다. NavigatorContent에 대한 참조가 포함 된 CreationManager 싱글 톤을 만든 다음 CreationMananager.instance.getComboBoxFactory(). createComboBox()를 사용합니다. 어디서나 당신이 필요합니다. 표시 목록에 의존하지 않고 NavigatorContent가 어떤 종류의 자식을 처리해야하는지 알 필요도 없습니다. 그게 일반적으로 어떻게 작동하지 않습니까? – weltraumpirat
당신이 옳습니다. 감사! –