vulcan9 / jikji.editor

jik-ji 프로젝트 관리
Other
0 stars 0 forks source link

오브젝트 id를 캡슐화에 지정하였을때, 정상적으로 작동하지 않습니다. #330

Closed wjdtprP closed 4 months ago

wjdtprP commented 5 months ago

오브젝트 id를 캡슐화에 지정하였을때, 정상적으로 작동하지 않습니다. 모션 컴포넌트_버튼형.zip

vulcan9 commented 5 months ago

원인

image

$self.find 메서드가 해당 id의 API를 찾아내지 못합니다. 직지 v3.3.31 버전에서 $self.find API 메서드의 로직이 변경되었기 때문입니다.

따라서 위의 경우 모션_버튼형 요소의 하위에서 이미지_a, 이미지_b의 id를 찾지 못해 정상동작 하지 않습니다. (이전 버전에서는 정상동작하는 코드입니다.)

로직 변경 이유

기존 $self.find() , $self.findAll() API 는 페이지 내 모든 element를 대상으로 검색하므로 어떤 element에서 API를 사용하던 같은 결과가 나오게 됩니다. 이것은 페이지에 같은 컴포넌트를 두개 이상 사용하면 id나 name이 중복되어 검색되기 때문에 컴포넌트 외부의 요소들을 참조하게되는 원치않는 문제가 발생하게 됩니다. 의도적으로 작성하지 않는 이상 컴포넌트는 기본적으로 자신과 자신의 하위 요소의 기능에만 관여하는 것이 좋습니다.

코드 패치 참고

위에서 설명한대로 이전 $self.find() , $self.findAll() API는 페이지 전체를 검색하므로 다음 코드와 같은 결과를 보냅니다.

$self.find : $self.document.find 메서드 결과와 같음
$self.findAll : $self.document.findAll 메서드 결과와 같음

따라서, 다음과 같이 작성하면 v3.3.31 버전에서도 정상적으로 동작합니다. image

해결

이는 API 업데이트 할때 하위 버전 호환성을 염두하지 못해 발생한 문제로 다음과 같이 해결할 예정입니다.

vulcan9 commented 4 months ago

Jik-ji_Editor_3.3.32 버전(이상)에서 처리(구현) 되었습니다.