angular.js - 试问angularjs的双向绑定是如何实现的?
高洛峰
高洛峰 2017-05-15 16:59:32
0
6
589

用过angularjs的人肯定知道他的双向绑定,用起来也是很方便,可是他内部是怎么实现的呢?

视图变化了去更新数据,这个还好理解,也大都知道怎么去模拟一下,但是说到数据变化了去更新视图,关键在于是怎么去判断数据发生了变化。。。

之前想了一下,类似先存储一份oldValue,然后定时去遍历这些,用newValue和oldValue去对比,如果变化了做更新和其他相关的工作。。。

但是觉得这样行吗?自己思索半天觉得也不是很靠谱,希望各位兄弟姐妹不吝教诲!## 标题

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(6)
Ty80

양방향 바인딩과 유사한 간단한 예제 구현

HTML

으아악

스크립트

으아악

보기가 변경되면 데이터 업데이트

이것은 매우 간단합니다. myModel 명령을 컴파일할 때 이벤트를 바인딩하기만 하면 됩니다

으아악

데이터 변경 업데이트 UI

스코프 내부에는 관찰자와 다이제스트가 있습니다

으아악

스코프에 값을 할당하고 다이제스트를 트리거하면 UI가 동시에 업데이트됩니다

으아악

범위에 값을 직접 할당하면 UI가 업데이트되지 않습니다. 대부분의 경우 Angular는 다이제스트가 트리거될 때만 UI를 업데이트하므로 범위만 제공할 수 있다는 인상을 줍니다. 결과적으로 이해할 수 없는 상황이 발생합니다. 예를 들어

으아악

setTimeout을 직접 사용하면 결과적으로 UI가 업데이트되지 않으며 다음과 같은 처리를 해야 합니다

으아악

또는 다이제스트를 트리거하는 데 도움이 되는 각도의 $timeout을 사용하세요

으아악
巴扎黑

검색해 보세요. 질문에 답하는 데 도움이 될 만한 기사가 많이 있습니다. 먼저 검색한 다음 질문하세요.

巴扎黑

먼저 말씀드리자면, 저는 주제에서 언급된 Anglejs에 대해 잘 알지 못합니다. 이는 약간 잘못된 것입니다.
Knockout에도 동일한 양방향 데이터 바인딩 기능이 있습니다. 관찰자 모드에서 구현됩니다. 관찰된 개체를 생성한 후 set 메서드를 사용하여 값을 할당하면 해당 개체에 관심이 있는 관찰자에게도 알립니다. 양방향 데이터 바인딩의 효과.

伊谢尔伦

angular1은 더티 체크입니다. . 이로 인해 성능 문제도 발생합니다

世界只因有你

AngularJS는 양방향 데이터 바인딩 메커니즘을 어떻게 구현하나요?

迷茫

可以参考:
http://teropa.info/build-your-own-angular/build_your_own_angularjs_sample.pdf

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿