두 개의 컨트롤러 a와 b가 있습니다. 컨트롤러 a에 클릭 이벤트가 있습니다. 클릭한 후 컨트롤 b에 p를 표시하는 방법은 무엇입니까?
예: 컨트롤러 a는 메뉴이고 컨트롤러 b는 콘텐츠 영역입니다. a에서 다른 메뉴를 클릭하고 b에서 다른 콘텐츠 표시를 제어합니다.
약간의 노력: 서비스와 공장을 시도했지만 데이터만 공유할 수 있고 실시간으로 실행할 수는 없습니다
业精于勤,荒于嬉;行成于思,毁于随。
저는 여기서 두 가지 방법을 시도했습니다: 1.Angular 자체 이벤트 메커니즘을 사용합니다
컨트롤러에서 a를 추가하여 b에 이벤트 알림을 보냅니다:
2. 서비스를 사용하여 콜백 이벤트를 시뮬레이션합니다. 핵심은 서비스를 사용하여 컨트롤러 간에 사용할 전역 콜백 함수를 저장하는 것입니다. 으아악
흠. 이벤트 버블링 및 터널링 메커니즘을 사용해 볼 수 있습니다.
이것을 보시면 됩니다
보다 직접적으로 $broadcast 및 $on을 시도할 수 있지만 효율성이 떨어집니다
위에 쓴 내용이 충분히 순수하지 않은 것 같아(다른 고려 사항이 섞여 있음) 순수 버전을 추가하겠습니다. 데모 제공
코드는 다음과 같습니다
1) 모든 이벤트를 전 세계적으로 관리하기 위한 이벤트 버스 만들기 2) $broadcast 및 $emit
저는 여기서 두 가지 방법을 시도했습니다:
으아악1.Angular 자체 이벤트 메커니즘을 사용합니다
컨트롤러에서 a를 추가하여 b에 이벤트 알림을 보냅니다:
으아악2. 서비스를 사용하여 콜백 이벤트를 시뮬레이션합니다. 핵심은 서비스를 사용하여 컨트롤러 간에 사용할 전역 콜백 함수를 저장하는 것입니다. 으아악
흠. 이벤트 버블링 및 터널링 메커니즘을 사용해 볼 수 있습니다.
이것을 보시면 됩니다
보다 직접적으로 $broadcast 및 $on을 시도할 수 있지만 효율성이 떨어집니다
위에 쓴 내용이 충분히 순수하지 않은 것 같아(다른 고려 사항이 섞여 있음) 순수 버전을 추가하겠습니다.
데모 제공
코드는 다음과 같습니다
으아악1) 모든 이벤트를 전 세계적으로 관리하기 위한 이벤트 버스 만들기
를 사용하세요.2) $broadcast 및 $emit