$ rootScope не синхронизирован с $ scope

0

http://plnkr.co/edit/s64HhVM4b3U5CaMmxcYu?p=preview

var app = angular.module('plunker', []).
  run(function($rootScope){
    $rootScope.foo='bar';
    $rootScope.o={firstName:'john'};
  });

app.controller('MainCtrl', function($scope) {
  $scope.copyProp=function(){
    $scope.o.firstName='Fred';
  }
    $scope.copyObj=function(){
    $scope.o={firstName:'Jack'};
  }
      $scope.copyVar=function(){
    $scope.foo='test';
  }
});

Может кто-нибудь объяснить, что происходит здесь, если я копирую свойство объектов, он остается в синхронизации с root. Если я копирую объект, он будет "не синхронизирован", переменная не работает вообще. Правильно ли я предполагаю, что все, что находится за пределами Redbox, является корнеплодом?

Теги:
angularjs-scope

1 ответ

0
Лучший ответ
$rootScope.o={firstName:'john'};
...
$scope.o.firstName='Fred';

До сих пор $scope не имеет свойства o. Поэтому, когда вы $scope.o к $scope.o JavaScript ищет o в родительской области до области корня до тех пор, пока не найдет o. На данный момент $scope.o - $rootScope.o. Они не синхронизированы, они одинаковы.

$scope.o={firstName:'Jack'};

Теперь $scope получает свое собственное свойство o, которое не зависит от $rootScope.o. Следовательно, $scope.o.firstName='Fred'; не меняет $rootScope.o. Они не имеют ничего общего друг с другом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню