[개발 공부]/[AngularJS]

[AngularJS] $watch 사용법

wild keyboardist 2021. 12. 3. 14:20

[AngularJS] $watch 란?

 

 

 

 

 

 

 

 

 

$watch 는 data 의 변화를 캐치하여, 미리 지정해놓은 동작을 수행할 수 있다.

주로 timeout / UI 입력값 변화 / API response(Ajax call) 등으로 인하여, Application 이 비동기 식으로 동작할 때 사용한다. 

 

 

 

 

 

 

 

[예시]

 

$scope.$watch('string', function(newValue, oldValue) {
        
        //string의 상태가 변하는 순간 실행할 구문
        console.log("'string' 의 상태가 변했습니다!");
}, false);

 

 

 

 

 

$watch 를 사용할 때, 3가지 parameter 를 던질 수 있는데, 아래와 같다.

(사실 4가지인데, 마지막 parameter는 생략)

 

 

 

 

 

 

 

 

 

1) watchExp ('string' 에 해당) :

 

상태 변화를 감지하는 대상으로써, $watch 당할(?) 타겟이다.

string 뿐만 아니라, function, array, object 도 가능하며,

이 값의 변화를 감지하면 아래의 listener, 즉 function 이 동작하게 된다.

 

 

 

 

 

 

 

2) listener (function 에 해당) :

 

$watch 할 타겟으로 선정한 요소의 값이 변경되면, trigger 되는 함수

파라미터인 (newValue, oldValue) 는 그냥 봐도 무엇일지 느낌이 온다.

 

위에서는 console.log("'string' 의 상태가 변했습니다!"); 가 실행될 것이다.

 

 

 

 

 

 

 

3) objectEquality (true or false) :

 

명시하지 않을 시, default 상태는 false 다.

 

false 일 때 : shallow comparison

true 일 때 : deep comparison

 

 

$watch 할 타겟이 원시변수라면 아무 상관없지만,

$watch 할 타겟이 참조변수라면 이 3번째 인자는 중요해진다.

[원시변수(string, number) vs 참조변수(array, object)]

 

 

 

 

 

 

 

 

예를 들어 아래 배열구조를 $watch 한다고 가정하면,

$scope.newArr = [1, 2, 3];

 

 

false 일 때는

$scope.newArr 에 아예 새로운 값이 할당되지 않는 한,

배열 내의 값(1, 2, 3)이 아무리 변해도 $watch 는 캐치하지 않는다.

 

 

배열 내 요소의 값 변화까지 캐치하고 싶을 때!

그 때 바로 true 를 주면 된다!

 

 

 

 

 

 

 

 

 

 

 

 

이벤트를 발생시키고, 그 이벤트를 캐치하고 싶다면?

https://devinserengeti.tistory.com/9?category=901018

 

[AngularJS] $broadcast & $on 사용법 / $broadcast 와 $emit 의 차이점

[AngularJS] $broadcast & $on 사용법 / $broadcast 와 $emit 의 차이점 AngularJS 를 사용하다보면 서로 다른 controller 간의 data 를 보내거나, 알림을 주는 등의 event 를 설정해야 할 때가 ..

devinserengeti.tistory.com

 

 

원시변수와 참조변수의 차이가 궁금하다면?

https://devinserengeti.tistory.com/15?category=901017

 

[자바스크립트] 기본형과 참조형의 차이 / 깊은복사 & 얕은복사

[자바스크립트] 기본형과 참조형의 차이 / deep copy & shallow copy [요점정리] 기본형은 변수를 할당한 후, 해당 저장소에 값을 저장하며, 참조형은 변수를 할당한 후, 해당 저장소에 주소를 저장한

devinserengeti.tistory.com