AngularJS 문서가 모델 지시어에 점을 사용하지 않는 이유는 무엇입니까?
비디오 AngularJS MTV Meetup : Best Practices (2012/12/11) 에서 Miško는 "..ng-model을 사용하는 경우 어딘가에 점이 있어야합니다. 점이 없으면 그렇게하는 것입니다. 잘못된.."
그러나 Angular.JS 웹 사이트 의 첫 번째 예제 (The Basics)는 모순되는 것 같습니다. 무엇을 제공합니까? Angular.JS는 MTV 밋업 이후 ng-model로 더 관대하게 바뀌 었나요?
이 작은 점은 범위 상속의 복잡성을 다룰 때 매우 중요합니다.
egghead.io 비디오 "점은" 이 매우 인기 스택 오버플로 질문처럼, 정말 좋은 개요를 가지고 : AngularJS와의 프로토 타입 / 프로토 타입 상속 범위의 미묘한 차이는 무엇인가?
여기에 요약하려고합니다.
Angular.js는 자식 범위 (예 : 자식 컨트롤러)가 부모 범위의 속성을 볼 수 있도록 범위 상속을 사용합니다. 따라서 다음과 같은 설정이 있다고 가정 해 보겠습니다.
<div ng-controller="ParentCtrl">
<input type="text" ng-model="foo"/>
<div ng-controller="ChildCtrl">
<input type="text" ng-model="foo"/>
</div>
</div>
( JSFiddle에서 함께 연주 )
처음에 앱을 시작하고 부모 입력에 입력하면 자식이이를 반영하도록 업데이트됩니다.
그러나 하위 범위를 편집하면 이제 상위에 대한 연결이 끊어지고 둘이 더 이상 동기화되지 않습니다. 반면을 사용 ng-model="baz.bar"하면 링크가 유지됩니다.
이것이 발생하는 이유는 자식 범위가 프로토 타입 상속을 사용하여 값을 조회하기 때문에 자식에 설정되지 않는 한 부모 범위로 연기되기 때문입니다. 그러나 일단 설정되면 더 이상 부모를 찾지 않습니다.
baz대신 개체 ( )를 사용하면 자식 범위에 아무것도 설정되지 않고 상속이 유지됩니다.
자세한 내용은 StackOverflow 답변을 확인하세요.
예를 들어 ng-repeat의 경우 상위 범위에서 프로토 타입으로 상속되는 모든 광고 항목에 대해 새 범위가 생성되는 경우와 같이 한 범위를 다른 범위에서 프로토 타입으로 상속 할 때 Dot이 필요합니다. 기본 예제에서는 범위가 하나뿐이므로 프로토 타입 상속이 없지만 자식 범위가 여러 개 있으면 문제에 직면하게됩니다. 아래 링크는 모든 것을 명확하게합니다.
https://github.com/angular/angular.js/wiki/Understanding-Scopes#ng-repeat
따라서이를 해결하려면 JS에서 먼저 부모를 선언해야합니다.
예 :
$scope.parent
뒤에 :
$scope.parent.child = "Imma child";
부모없이 자식 만 수행하면 Angular가 중단됩니다.
'Nice programing' 카테고리의 다른 글
| 조건부 이동이 분기 예측 실패에 취약하지 않은 이유는 무엇입니까? (0) | 2020.11.01 |
|---|---|
| 방랑자는 기본적으로 안전하지 않습니까? (0) | 2020.11.01 |
| Swagger 사양 JSON을 HTML 문서로 변환 (0) | 2020.11.01 |
| Electron (Atom Shell) 애플리케이션에서 사용자 설정을 저장할 위치는? (0) | 2020.11.01 |
| ASP.NET 애플리케이션을 단위 테스트 할 때 web.config를 사용하는 방법 (0) | 2020.11.01 |