angularJS에서 달러 방법과 변수를 사용하는 이유는 소화가 진행될 때 angularJS가 그 값을 확인하지 않도록 지시하는 것입니까? 따라서 각도가 $scope.$value
와를 $scope.value
만나면 변수 이름에 달러 문자가 접두어로 붙어 있기 때문에 전자를 검사하지 않아도 됩니까?
$scope
있지만 지시문에는 문서 가 scope
있습니다. WTF?
angularJS에서 달러 방법과 변수를 사용하는 이유는 소화가 진행될 때 angularJS가 그 값을 확인하지 않도록 지시하는 것입니까? 따라서 각도가 $scope.$value
와를 $scope.value
만나면 변수 이름에 달러 문자가 접두어로 붙어 있기 때문에 전자를 검사하지 않아도 됩니까?
$scope
있지만 지시문에는 문서 가 scope
있습니다. WTF?
답변:
Angular는 접두사로 시작하는 변수를 무시하는 경우가 몇 번 있습니다.
{{ }}
지시문을 사용할 때 angular는 중첩 $
변수를 표시하지 않습니다 . 예를 들어 visible
속성 만 표시합니다 .
<div ng-init="n = { visible: 'foo', $ignore: 'bar' };">{{ n }}</div>
또한 범위 개체에 명시 적 감시자를 추가 할 때이 개체의 선행 달러 기호가있는 속성을 변경해도 감시자가 트리거되지 않습니다. 이 업데이트 된 바이올린을 참조하십시오 .
angular.equals()
접두사가 붙은 키는 무시합니다$
.
아래 스 니펫 http://docs.angularjs.org/tutorial/step_05 의 명명 규칙입니다.
'$'접두사 명명 규칙
고유 한 서비스를 만들 수 있으며 실제로 11 단계에서 정확하게 수행합니다. 명명 규칙으로 앵귤러의 기본 제공 서비스, 스코프 메서드 및 기타 앵귤러 API에는 '$'접두사가 있습니다. 이름 앞에. 가능한 이름 충돌을 피하기 위해 서비스와 모델의 이름을 지정할 때 '$'접두사를 사용하지 마십시오.
http://docs.angularjs.org/guide/concepts#angular_namespace
Angular 네임 스페이스
우연한 이름 충돌을 방지하기 위해 Angular는 $와 충돌 할 수있는 개체 이름을 접두사로 사용합니다. 실수로 각도 코드와 충돌 할 수 있으므로 코드에 $ 접두사를 사용하지 마십시오.
$
프리픽스 각도의 코어에 속하는 변수, 파라미터, 특성, 또는 방법을 나타낸다.
프레임 워크 내에서 시작되었지만 실제로는 API의 일부가 아닌 객체의 속성 은 개인 메서드 또는 속성 을 나타 내기 위해 시작 $
하거나 심지어 시작 하기도 합니다. 이것은 다른 라이브러리에서 접두사가 자주 사용되는 것과 같은 방식 입니다.$$
_
프레임 워크 자체에서 특별한 의미를 부여 할 수 있지만 런타임에서 코드를 해석하는 방식에는 영향을 미치지 않습니다. 기본적으로 "네가 엉망이되어서는 안된다"는 명명 규칙입니다.
$$__$_$
– 그것은 해석기에 특별한 의미가없는 식별자 일뿐입니다.
확실하지는 않지만 AngularJS 내부는 다이제스트 중에 $ 접두사 변수를 조작하는 데 의존한다고 생각합니다. 이러한 변수를 확인하면 다이제스트의 각주기 동안 끊임없이 변경 될 수 있으므로 다이제스트가 안정화되지 않습니다.
그래도 인용하지 마십시오. :)
달러 ( $ ) 기호는 특정 지시문에서 요소가 반복 (또는 해석)되는 것을 방지합니다. 예를 들어 $ 로 시작하는 속성 은 for 루프의 if 절ng-repeat
때문에 사용되지 않습니다 .
if(collection.hasOwnProperty(key) && key.charAt(0) != '$')
누군가 각도 github 페이지 의 주제에 대해 문제 를 일으켰습니다.
메소드 shallowCopy
에서 $$ 로 시작 하는 특성은 특성을 반복하는 동안 if 절로 인해 건너 뜁니다 .
if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) {
@MarcoS 는 $ scope와 scope의 차이점을 설명하는 https://thinkster.io/a-better-way-to-learn-angularjs/scope-vs-scope 에 대한 링크를 제공했습니다 . 다른 답변의 정보를 추가하여 이것이 유용하다는 것을 알았습니다.
각도 지시문에는 링크와 컨트롤러가 있습니다. 링크는 범위, 요소, 속성 오브젝트와 같은 고정 된 매개 변수 세트가있는 표준 기능입니다.
컨트롤러의 인수는 Angular 인젝터에 의해 관리되며 순서에 의존하지 않습니다. 인젝터는 $로 시작하는 매개 변수를 찾아 전달할 오브젝트를 분석합니다.
https://thinkster.io/a-better-way-to-learn-angularjs/scope-vs-scope 의 저자가 더 잘 설명합니다.
변수가 아니라 컨트롤러가받는 매개 변수에 큰 차이가 있습니다. 범위 매개 변수는 $ scope 매개 변수와 완전히 다릅니다.
자세한 정보는 다음의 유용한 게시물을 확인하십시오. http://www.thinkster.io/angularjs/aw9kWmdnik/angularjs-scope-vs-scope