AngularJS

[AngularJS] 3. scope의 계층적 구조와 이벤트 처리 구조

Yoon 2021. 11. 9. 23:15

Scope?

AngularJS에서 Scope란 특정 모듈의 컨트롤러의 유효범위 안에서 사용할 수 있는 저장공간,

즉 AngularJS에서의 변수이다.

 

AngularJS에서 scope는 계층적인 구조를 가지고 있다.

 

<html ng-app> -->최상위 root scope
        <head>
        </head>
        <body ng-controller="controller1">  --> controller1 내부에 할당된 scope
                  <div ng-controller="controller2">  --> controller2 내부에 할당된 scope
                  </div>
        </body>
</html

이처럼 웹 페이지 로드 후 ng-app이 정의된 DOM에 root scope가 할당되고

그 후 내부에 있는 컨트롤러의 scope들이 계층적으로 생성이된다.

 

scope가 계층적 구조이지만 자식 scope에서 부모 scope에 접근이 가능하다.

즉 찾고있는 scope 내부에 해당 모델이나 함수가 없으면 상위 scope에서 찾는 구조이다.

└이 구조를 이용하여 상위의 scope에는 공통으로 사용할 것을 정의하고 하위 scope에는 특화된 것들을 정의해서 사용할 수 있다.

 

 

위 예제 처럼 ctrl1 하위의 ctrl2의 스코프는 부모 스코프의 name을 재정의 하였고 자식 스코프에서 age를 가져올 땐

자신의 스코프엔 값이 없으니 부모 스코프의 정의된 age를 가져오는 것을 볼 수 있다.

 

결과 화면

 


Isolate scope

스코프의 계층 구조는 유용하지만

특정 스코프 내에 있는 값을 가져오려고 할땐 문제가 될 수 있다.

이때 Isolate scope를 이용하면 자신의 scope 내에서만 모델과 핸들러를 찾을 수 있다.

isolate scope를 이용하면 자신만의 독립적인 사용자정의 디렉티브를 만드는데 활용할 수 있음.