Angularjs: $scope vs scope
Angularjs에서 다음을 사용해야 하는 특별한 이유가 있습니까?$scope
컨트롤러 및scope
(없음)"$"
명령어 링크 기능에 포함됩니까?그냥 관례인가? 아니면 다른 것인가?
할 때$scope
컨트롤러에서 종속성 주입은 변수 이름 일치를 기반으로 스코프를 주입합니다.$scope
, 이 경우,scope
이름이 통하지 않으니.
지시어의 경우 주입은 위치 기반이므로 변수의 이름을 지정할 수 있습니다.a
또는b
뭐 그런 거.링크 함수의 지시 순서는 다음과 같습니다.
(scope, iElement, iAttrs, controller)
따라서 첫 번째 요소는 항상 스코프 객체입니다.
controller, directive, factory, filter, service, animation, config 및 run 등의 모듈 팩토리 메서드는 Dependency Injection(DI; 의존성 주입)을 통해 인수를 수신합니다.DI의 경우 스코프 오브젝트에 달러 접두사(예:$140입니다.그 이유는 주입된 인수가 주입 가능한 객체의 이름 뒤에 $($) 프리픽스가 붙는 것과 일치해야 하기 때문입니다.
예를 들어 다음과 같이 스코프 및 요소 개체를 컨트롤러에 주입할 수 있습니다.
module.controller('MyController', function ($scope, $element) { // injected arguments });
directive linker 함수와 같은 메서드가 종속성 주입을 통해 인수를 수신하지 않는 경우 $ 접두사(scope)를 사용하지 않고 스코프 개체를 전달합니다.그 이유는 passing 인수가 발신자에 의해 수신되기 때문입니다.
module.directive('myDirective', function () // injected arguments here
{
return {
// linker function does not use dependency injection
link: function (scope, el, attrs) {
// the calling function will passes the three arguments to the linker: scope, element and attributes, in the same order
}
};
});
즉, 의존성 주입의 경우 스코프 오브젝트는 $scope로 수신되며, 비의존성 주입 범위 오브젝트는 스코프 또는 임의의 이름으로 수신됩니다.
이 동작의 이유는 컨트롤러와 달리 디렉티브는 의존성 주입을 사용하지 않고 뷰 뒤에 배치된 컨트롤러에 의해 작성된 범위를 통과하기 때문입니다.이것은 매우 까다롭기 때문에 다른 범위에서 지시를 재사용할 수 있습니다.
그$
에"$scope"
스코프 값이 현재 컨텍스트에 삽입되고 있음을 나타냅니다.
$scope
에 의해 제공되는 서비스입니다.$scopeProvider
. Angular의 내장 의존성 인젝터를 사용하여 컨트롤러, 디렉티브 또는 기타 서비스에 주입할 수 있습니다.
module.controller(function($scope) {...})
의 줄임말이다
module.controller(['$scope', function($scope) {...}])
하지만,scope
어떤 것이든 될 수 있고, 함수 파라미터 이름일 수 있습니다.foo
또는a12342saa
.
function link( scope, element, attributes ) {
// Only scope
}
"$scope"의 "$"는 스코프 값이 현재 컨텍스트에 삽입되고 있음을 나타냅니다.그러나 범위에 대한 참조가 모두 종속성 주입에 기반하는 것은 아닙니다.
언급URL : https://stackoverflow.com/questions/19288586/angularjs-scope-vs-scope
'programing' 카테고리의 다른 글
2개의 MVC 구성을 사용한 스프링부트 (0) | 2023.04.02 |
---|---|
React setState 콜백을 사용하는 경우 (0) | 2023.04.02 |
POEdit 사용 - 특정 도메인의 문자열만 검색합니다. (0) | 2023.04.02 |
Wordpress의 로그인/등록 페이지를 사용자 지정 로그인/등록 페이지로 리디렉션 (0) | 2023.04.02 |
콘솔에서 리액트 요소의 소품 및 상태를 검사하려면 어떻게 해야 합니까? (0) | 2023.04.02 |