2012-06-16 7 views
0

부모 구성 요소, 예를 들어 P, 함수가있는 말, Pfunc 있습니다. 또한 두 개의 하위 구성 요소 (예 : C1 및 C2)와 해당 기능 (예 : C1func 및 C2func)이 있습니다.하위 구성 요소에서 함수를 호출하는 방법 : a) 다른 자식 구성 요소 b) 부모 구성 요소 및 그 반대로?

구성 요소에서 함수를 호출하는 방법은 무엇입니까?

+0

게시하기 전에이 게시물을 보았습니다. http://stackoverflow.com/questions/3340516/is-it-possible-to-call-a-function-in-a-parent-component-from-a-child- 구성 요소 -i – ProKiller

답변

0

구성 요소에서 함수를 호출하는 방법은 무엇입니까? 캡슐화의 관점에서

:

당신은 결코 모든 구성 요소에 어떤 함수를 호출 할 수 없습니다. 상위 구성 요소와 "통신"하려면 이벤트 전달을 사용해야합니다. 의사 소통하기. 함수를 호출하거나 속성을 설정해야합니다. 당신은 결코 옆으로 의사 소통을해서는 안됩니다. 당신이 P는 PFunc을 실행하려면

, 다음 그냥 실행 : 당신이 P는 C1Func을 실행할 및 C1Func이 공개되면, 당신은 P의 내부처럼 뭔가를 할 수

this.PFunc(); 

:

C2Instance.C2Func() 
: 당신이 P는 C2Func을 실행할 및 C2Func가 공개되면
C1Instance.C1Func() 

는, 당신은 P의 내부처럼 뭔가를 할 수 개념적으로 다음과 같이

dispatchEvent(new Event('callPFunc')); 

내부 P, 이벤트 리스너가 있어야한다 : 당신이 C1 또는 C2를 원하는 경우에3210

후이 같은 이벤트를 전달해야 PFunc를 호출

C1Instance.addEventListener('callPFunc',onCallPFunc); 

.... 
// elsewhere in code 

protected function onCallPFunc(event:Event):void{ 
    PFunc(); 
} 

C1이 C2Func 또는 C2를 호출하여 C1Func를 호출하게하려면 운이 좋지 않은 것입니다. 동일한 계층 구조 수준의 두 구성 요소는 서로 직접 상호 작용하지 않아야합니다. 가장 좋은 방법은 이벤트를 파견하는 것입니다. 부모에게서 청취하고 부모가 대체 구성 요소로 다시 호출하도록합니다.

+0

빠른 응답을 주셔서 감사합니다. 바로 구현할 것입니다. – ProKiller

+0

방금 ​​내가 한 일 : C1func 내부에 다음과 같이 썼습니다. parentDocument.Pfunc(); (이것은 효과가 있었다). P의 Pfunc 내부에 다음과 같이 썼습니다. C2Instance.C2func(); (this too too) 따라서 C1 (또는 C1func)에서 C2func를 호출 할 수있었습니다. 표준/효율성을 코딩하는 측면에서와 같이 내 방식이 잘못 되었습니까? :) – ProKiller

+0

parentDocument의 사용은 캡슐화의 중단입니다. 자녀 (C1)는 이제 부모 (P)에 의존하고 있으며 재사용이 더 제한적입니다. – JeffryHouser

관련 문제