toggle menu

[AngularJS] 스코프(scope)란 무엇인가?

2012. 10. 31. 17:18 AngularJS
스코프는 어플리케이션 모델을 나타내는 객체이다. 표현식의 실행 컨텍스트이다. 스코프는 어플리케이션의 DOM 구조를 모방한 계층적인 구조로 정렬된다. 스코프는 표현식을 보거나 이벤트를 전파할 수 있다.


스코프 특징들
스코프는 모델 변화를 관찰하기 위한 $watch API들을 제공한다.
스코프는  "Angular realm" (controllers, services, Angular event handlers)의 외부에서부터 시스템을 거쳐 view에 까지 모델의 변경 사항을 전파하는 $apply API들을 제공한다.
스코프는 공유 모델 속성에 접근이 제공되는 동안 독립적인 어플리케이션 컴포넌트에 소속될 수 있다. 스코프의 상속 속성은 부모 스코프로부터 받는다.
스코프는 표현식 평가에 대한 컨텍스트를 제공한다. 예를 들어 {{ username }} 표현식은 아무런 의미가 없지만, username을 정의하고 있는 특정 scope에 의해 표현식이 평가될 수 있다.


데이터 모델로서의 스코프
스코프는 어플리케이션 컨트롤러와 뷰 사이의 접착제같은 역할을 한다. 템플릿 링킹 단계에서 지시어는 스코프 상에서 $watch 표현식을 설정한다. $watchs 는 지시어로 하여금 속성의 변화가 알려지도록 허용하고, 지시어로 하여금 DOM에 업데이트된 값을 그리도록 허용한다.

컨트롤러와 지시어 모두 스코프를 참조하지만, 서로 참조하지는 않는다. 이러한 배치는 컨트롤러를 DOM으로부터 만큼이나 지시어로부터 독립적으로 만들어준다. 이점은 컨트롤러로 하여금 뷰에 대해 상관없게 만듦으로써 어플리케이션 테스팅에 엄청난 진보를 가져다준다는 점에서 매우 중요하다.












AngularJS 관련 포스팅 더보기