2016-01-27 3 views
2

Может кто-то пожалуйста, помогите мне объяснить этот сегмент кода в AngularJSAngularJS код Понимание

$rootScope.compiledScope = $scope.$new(!0, $rootScope), $scope.variable = "someValue"; 
  1. Что $ новый оператор служит здесь
  2. Что такое! 0?
  3. Как, используется для разделения двух заявлений и назначить его на одну переменную на левой

ответ

1

documentation С, $new функции принимает 2 параметра.

Первая часть:

$new(isolate, parent); 

изолировать: Если это правда, создает возможности для выделения новой области, которую вы создаете. В основном это означает, что он не будет наследовать от родительской области. Он будет унаследован от родительской области, но свойства родительской области не будут видны ей.

родительский: $scope, который будет родителем вновь созданной области.

В большинстве языков программирования 0 == false. И отрицание этого даст вам true.

Так расшифровке первую часть кода:

$rootScope.compiledScope = $scope.$new(!0, $rootScope) 

Добавить свойство compiledScope к вашему $ rootScope, значение которого будет новый изолят сфера, родитель которого составляет $ rootScope.

изолят сфера: Область, которая не образцово наследуют родительскую область видимости. Его в основном пустая область, а свойства его родителя видны.

Вторая часть

$scope.variable = "someValue"; 

Приложить variable к $scope и устанавливает его значение someValue. И запятая между просто отделяет 2 заявления и такая же, как и делать:

$rootScope.compiledScope = $scope.$new(!0, $rootScope); 
$scope.variable = "someValue"; 
1

Как documentation говорит, первый параметр, в вашем случае: 0 = истина:

Если это правда , то область действия не прототипически наследуется от родительской области . Область выделена, так как она не может видеть свойства родительского объекта .

второй параметр, в вашем случае $ rootScope:

Сфера, которая будет $ родителем вновь созданной области. По умолчанию эта область не предоставляется.

Так что $ scope. $ New (! 0, $ rootScope) создаст новый новый охват rootScope.

3) Здесь, когда создается новая область, она присваивает переменной $ scope.variable новую область, поэтому эта переменная доступна только в этой новой и родительской области.

1

Q1: $new используется для создания новой области

Q2: '! 0' не что иное, как 'истина'. В этом случае это заставит Angular создать новую область, которая не прототипически наследует родительскую область (в этом случае $ rootScope).

Q3: Это допустимый синтаксис JS и в конце выполнения $ rootScope.compiledScope бы новую изолированную сферу и $ scope.variable бы SomeValue