source

$scope의 차이는 무엇입니까?$root 및 $rootScope?

manycodes 2023. 3. 27. 21:23
반응형

$scope의 차이는 무엇입니까?$root 및 $rootScope?

컨트롤러에 $scope에 $root가 있는 것으로 보이는데, 이것은 무엇입니까?컨트롤러에 삽입할 수 있는 $rootScope와 어떻게 다른가요?

$rootScopevar는 모든 스코프의 부모를 가리키며 어디에나 주입할 수 있습니다.그 외의 모든 스코프는,$rootScope. 이들은 를 통해 생성됩니다.$new의 방법$rootScope따라서 모든 스코프는 에서 상속됩니다.$rootScope.

정의의 각도 소스에서는Scope컨스트럭터에는 다음 행이 있습니다.

 function Scope() {
   this.$id = nextUid();
 ...
 this['this'] = this.$root =  this;
 ...

그런 것 같아요$rootvar는 단지 자리 표시자일 뿐이다this최초 생성된 범위 -$rootScope.

다음으로 이 코드 조각이 있습니다.$new방법:

  $new: function(isolate) {
      ...

    if (isolate) {
      child = new Scope();
      child.$root = this.$root;
   ...
   return child;

그래서...$root모든 스코프 차일드 var$rootScope에 대한 참조입니다.$rootScope그리고 그 아이들의 모든 아이들은 같은 언급을 받게 될 것이다.$rootScope

제 생각에는, 을 사용하는 것이 더 낫다고 생각합니다.$rootScope의존성 주입을 통해 사용되는 것은 명확하고 전체적으로 더 자주 사용되는 방법이기 때문입니다.$rootScope

아까도 말씀드렸듯이$scope.$root에 대한 참조가 있습니다.$rootScope.

유감스럽게도, 이 기능을 사용하는 것에는 차이가 있습니다.$scope.$root및 사용$rootScope:

  1. 언제$scope루트, 루트, 루트,$root속성은null
  2. $scope.$root는 격리된 범위에만 할당됩니다.https://github.com/angular/angular.js/blob/v1.3.6/src/ng/rootScope.js#L204

그래서 당신은 지금 어떤 상황에 처해있을 수 있습니다.$scope.$rootnull·사용의 용이성$rootScope대신...

언급URL : https://stackoverflow.com/questions/22216441/what-is-the-difference-between-scope-root-and-rootscope

반응형