"올바른 성장과 따뜻한 나눔"이 있는 넥스트리
오랜만에 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 정의(overload)하고...
아래와 같이 쓰면 this 스코드 그대로 가지고 가는 callback function을 넘길 수 있다는 이야기입니다.
이렇게 하지 않으면 위의 element 클릭해서 handeClick function이 호출되더라도 scope 바뀌어 this.doStuff()하면 정의되지 않은 function이라고 에러 나옵니다.
scope를 유지하고 싶다면 그냥 호출하지 말고 아래 코드를 이용하여 넘기세요~
Thanks Kier Darby.
'웹기술들' 카테고리의 다른 글
| jQuery의 이벤트 ajax 핸들러에서의 scope 문제 해결책 (8) | 2011/07/19 |
|---|---|
| Java 웹애플리케이션에서 Flash scope 구현 - 메시지 출력 문제 (0) | 2011/06/23 |
| Struts 태그에서 자동생성되는 TD 태그 없애기 (4) | 2010/03/22 |
| 스프링 프레임워크 3.0 GA 릴리즈 - 기능 요약 (0) | 2009/12/30 |
| Flex에서 ExternalInterface 사용시 동기화 문제 (1) | 2009/12/23 |
| Java로 엑셀 다운로그 구현하기 (0) | 2009/12/20 |



