Angularjs를 사용해보신 분들은 양방향 바인딩을 아실텐데요, 사용하기 매우 편리한데 내부적으로는 어떻게 구현되나요?
뷰가 변경될 때 데이터를 업데이트하는 것은 이해하기 쉽고, 대부분의 사람들은 이를 시뮬레이션하는 방법을 알고 있습니다. 하지만 데이터가 변경될 때 뷰를 업데이트하는 경우에는 데이터가 변경되었는지 어떻게 판단하느냐가 핵심입니다. . .
이전에 oldValue의 복사본을 저장한 다음 이를 정기적으로 탐색하고 newValue와 oldValue를 비교하고 변경된 경우 업데이트 및 기타 관련 작업을 수행하는 것과 유사하다고 생각했습니다. . .
그런데 이게 괜찮을 것 같나요? 오랫동안 생각해 본 결과 그다지 믿을만하지 않다는 느낌이 들었습니다. 모든 형제 자매들이 주저하지 말고 가르쳐 주시길 바랍니다. ##제목
양방향 바인딩과 유사한 간단한 예제 구현
HTML
으아악스크립트
으아악보기가 변경되면 데이터 업데이트
이것은 매우 간단합니다. myModel 명령을 컴파일할 때 이벤트를 바인딩하기만 하면 됩니다
으아악데이터 변경 업데이트 UI
스코프 내부에는 관찰자와 다이제스트가 있습니다
으아악스코프에 값을 할당하고 다이제스트를 트리거하면 UI가 동시에 업데이트됩니다
으아악 으아악setTimeout을 직접 사용하면 결과적으로 UI가 업데이트되지 않으며 다음과 같은 처리를 해야 합니다
으아악또는 다이제스트를 트리거하는 데 도움이 되는 각도의 $timeout을 사용하세요
으아악검색해 보세요. 질문에 답하는 데 도움이 될 만한 기사가 많이 있습니다. 먼저 검색한 다음 질문하세요.
먼저 말씀드리자면, 저는 주제에서 언급된 Anglejs에 대해 잘 알지 못합니다. 이는 약간 잘못된 것입니다.
Knockout에도 동일한 양방향 데이터 바인딩 기능이 있습니다. 관찰자 모드에서 구현됩니다. 관찰된 개체를 생성한 후 set 메서드를 사용하여 값을 할당하면 해당 개체에 관심이 있는 관찰자에게도 알립니다. 양방향 데이터 바인딩의 효과.
angular1은 더티 체크입니다. . 이로 인해 성능 문제도 발생합니다
AngularJS는 양방향 데이터 바인딩 메커니즘을 어떻게 구현하나요?
可以参考:
http://teropa.info/build-your-own-angular/build_your_own_angularjs_sample.pdf