왜 앵글은JS 문서는 모델 지시문에 점을 사용합니까?
AngularJS MTV Meetup 비디오에서: 베스트 프랙티스(2012/12/11), Mishko씨는 다음과 같이 설명합니다.ng-model을 사용한다면 어딘가에 점이 있어야 합니다.점이 없다면 잘못하고 있는 거야"
그러나 Angular의 첫 번째 예(기본 사항)입니다.JS 웹사이트는 반박하는 것 같습니다.왜 그러고 있어?Angular가 있다.JS는 MTV 미팅 이후 ng-model로 좀 더 관대해졌다고 바꿨다.
이 작은 점은 스코프 상속의 복잡성을 다룰 때 매우 중요합니다.
egghead.io 비디오 "The Dot"은 매우 좋은 개요를 가지고 있으며, 매우 인기 있는 스택 오버플로우 질문도 있습니다.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>
처음에 앱을 시작하고 부모 입력에 입력하면 자녀가 업데이트하여 반영합니다.
그러나 하위 범위를 편집하면 부모에 대한 연결이 끊어지고 두 개의 연결이 더 이상 동기화되지 않습니다. 「 」를 하면, 「 」를 사용합니다.ng-model="baz.bar"
이 경우 링크는 유지됩니다.
이러한 현상이 발생하는 이유는 하위 범위가 프로토타입 상속을 사용하여 값을 조회하기 때문에 하위 범위에 설정되지 않는 한 상위 범위에 종속되기 때문입니다.단, 설정되면 더 이상 부모를 검색하지 않습니다.
「 」 「 」 )를 .baz
되지 않고, 은 그대로 남습니다 대신에, 자 스코프에는 아무것도 설정되지 않고, 상속은 그대로 남습니다.
상세한 것에 대하여는, StackOverflow 의 회답을 참조해 주세요.
예를 들어 ng-repeat의 경우 한 범위를 다른 범위에서 프로토타입으로 상속하는 모든 라인 항목에 대해 새 범위가 작성되는 등 도트가 필요합니다.기본 예에서는 스코프가 1개뿐이므로 프로토타입 상속은 없지만 하위 스코프가 여러 개 있으면 문제가 발생하기 시작합니다.아래 링크를 클릭하면 모든 것이 명확해집니다.
https://github.com/angular/angular.js/wiki/Understanding-Scopes#ng-repeat
이 문제를 해결하려면 JS에서 먼저 부모를 선언해야 합니다.
예.
$scope.parent
그 다음:
$scope.parent.child = "Imma child";
부모 없이 아이만 데리고 있으면 앵글이 망가질 거야
@OverZealous의 답변에 따르면, 저는 더럽지만 편안하고 간단한 해결 방법을 생각해 냈습니다.
$scope.$s = $scope
$scope.foo = 'hello'
그 후 사용$s
템플릿을 사용하면 모델을 안전하게 수정할 수 있습니다.
<input ng-model="$s.foo"/>
나는 내 프로젝트에서 그런 더러운 작품들에 대한 서비스를 썼다.
언급URL : https://stackoverflow.com/questions/17606936/why-dont-the-angularjs-docs-use-a-dot-in-the-model-directive
'programing' 카테고리의 다른 글
readyState vs status==200 (0) | 2023.03.13 |
---|---|
JSON에서 커스텀 Json Converter를 구현하는 방법.인터넷? (0) | 2023.03.13 |
Angular에서 링크 기능을 실행하기 전에 컨트롤러에서 데이터를 기다립니다.JS 지시어 (0) | 2023.03.13 |
ng-click과 ng-click의 차이점 (0) | 2023.03.13 |
HTML의 여러 클래스 속성 (0) | 2023.03.13 |