메인 토픽 목록의 항목에 클릭 핸들러를 추가하려고 합니다(특정 조건에서 동작을 커스터마이즈하기 위함). api.decorateWidget()와 같은 API를 사용해 특정 위젯의 모든 인스턴스에 이벤트 핸들러를 추가할 수 있을까요?
—
고려해 본 다른 방법들:
addEventListener를 전역 함수에서 사용하는 것은 비현실적입니다. 페이지 로드 이후에도 추가적인 토픽 목록 항목이 로드될 수 있기 때문입니다(예: 무한 스크롤). (구현 시에는 DOM의 변경 사항을 관찰하고, 더 많은 위젯이 렌더링될 때 추가 이벤트 핸들러를 연결하기 위해 MutationObserver와 같은 것이 필요할 것입니다.)
body에 클릭 핸들러를 연결하고 이벤트 버블링을 통해 모니터링하는 것(could)이 가능할 수도 있습니다(예: jQuery에서 $("body").on("click", ".list-item-topic", function())로 수행하는 방식). 하지만 preventDefault()와 stopPropagation()을 사용해야 하며, 이 방식으로는 이를 지원하지 않는다고 생각합니다.
추가로: 여기서는 약간 혼란스럽지만, 특정 UI 요소와 연관된 "위젯"을 어떻게 찾나요? (제 경우: 토픽 목록에서 개별 토픽을 표시하는 topic-list-item을 구동하는 위젯). 위젯 디렉터리를 확인해 보았지만, topic-list-item과 관련이 있는 것으로 보이는 것이 없습니다. 이 "컴포넌트"가 topic-list-item의 렌더링을 담당하는 것으로 보입니다.
위젯과 컴포넌트 간의 구분이 명확하지 않습니다 (잘 알지 못해서 죄송합니다) — 아마도 api.attachWidgetAction을 사용하여 이벤트 핸들러를 "위젯"에만 첨부할 수 있고 "컴포넌트"에는 첨부할 수 없는 것 같습니다. 컴포넌트에 해당하는 동등한 기능이 있나요?