HTML5 마스터Q&A는 HTML CSS JavaScript 개발자들의 질문과 답변을 위한 커뮤니티 사이트입니다.

AngularJS에서 양방향 데이터 바인딩은 어떻게 구현되나요?

0 추천
AngularJS에서는 양방향 바인딩이 처리됩니다. 뷰가 바뀌었을때 모델이 바뀌는 것은 이해하겠는데 모델이 바뀌었을때 어떻게 감지해서 뷰로 반영이 되나요? 자세한 설명이 없어서 궁금하네요.
궁금이 (200 포인트) 님이 2013년 6월 24일 질문

1개의 답변

0 추천

모델이 바뀌었을때 뷰로 반영되는 원리는 간단합니다. AngularJS는 모델에서 값이 바뀌었는지를 알아내기 위해서 값을 기억하고 있습니다. 이전 값과 새로운 값을 비교하고 만약 바뀌었다면 변경 이벤트를 발생시키는 것입니다. 이런 더티 체킹을 $scope의 $digest 메서드가 구현 하고 있습니다. $digest 는 외부 모듈에서 변경을 반영하기 위해 $apply를 호출할때 내부적으로 호출하는 함수이기도 하죠. ( http://docs.angularjs.org/api/ng.$rootScope.Scope ) $watch 메서드로 리스너를 설정해넣을수 있습니다. 이 $appy는 AngularJS의 라이프사이클 상에서 자동으로 수행되기 때문에 JQuery UI 같은 외부 모듈의 Event처리등에서만 직접 호출하지 AngularJS상에서는 직접 호출할 필요가 없습니다.

이런 더티 체킹은 리스너 설정 방식의 프로그래밍과 비교될수 있는데 그 간단함음 매우 맘에 들지만 성능이 안좋을 수 있을것 같다는 우려를 하게됩니다. 성능은 대부분의 구형 PC에서도 크게 문제 없이 돌아가기 때문에 얻을수 있는 장점에 비해 별로 문제가 안된다는 입장입니다. 자세한 비교는 ( http://stackoverflow.com/questions/9682092/databinding-in-angularjs ) 에서 확인하실수 있습니다.

회색 (2,140 포인트) 님이 2013년 6월 24일 답변
...