태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

티스토리 툴바


"올바른 성장과 따뜻한 나눔"이 있는 넥스트리
오랜만에 Javascript 코딩해 보려는데 참 힘드네요. javascript로 컴포넌트 만들고 컴포넌트내에서 ajax 호출시 this.someFunction 식으로 callback 넘겨주는데 scope가 달라져 someFunction 내에서 this 접근이 되지 않습니다. ㅜㅜ 이러면 메소드 못나누고 내가 만든 클래스 못쓰게 되는 사태가 발생!!!
Ext.js에서는 이런 경우를 위해 scope을 지정하는 옵션이 있었는데 쩝~
(이미지출처)

구글신 소환해봅니다. 역시 같은 문제로 고생하는 분 많았네요.
그 중 제 맘에 꼭 드는 솔루션을 제시한 블로그가 있어 소개합니다.

Go! Workaround for jQuery's lask of scope management in event / AJAX handlers


대략적인 내용

글쓴이도 저와 같은 상황으로 고생했고 다음과 같이 scope function 정의해서 간단히 해결했다는 내용입니다.
제 코드는 좀 길고 복잡해서 원문 코드 그대로 사용합니다. 이런 생각을 왜 못했을까?

아래와 같이 scope function 정의(overload)하고...


아래와 같이 쓰면 this 스코드 그대로 가지고 가는 callback function을 넘길 수 있다는 이야기입니다.


이렇게 하지 않으면 위의 element 클릭해서 handeClick function이 호출되더라도 scope 바뀌어 this.doStuff()하면 정의되지 않은 function이라고 에러 나옵니다.

scope를 유지하고 싶다면 그냥 호출하지 말고 아래 코드를 이용하여 넘기세요~


Thanks Kier Darby.

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 행복한아빠