AngularJS 代码理解

AngularJS Code Understanding

谁能帮我解释一下 AngularJS

中的这段代码
$rootScope.compiledScope = $scope.$new(!0, $rootScope), $scope.variable = "someValue";
  1. $new 运营商在这里服务什么
  2. 什么是 !0?
  3. 如何 , 用于分隔两个语句并将其分配给左边的一个变量

正如documentation所说,第一个参数,在你的例子中:!0 = true :

If true, then the scope does not prototypically inherit from the parent scope. The scope is isolated, as it can not see parent scope properties.

第二个参数,在你的例子中是$rootScope:

The Scope that will be the $parent of the newly created scope. Defaults to this scope if not provided.

因此 $scope.$new(!0, $rootScope) 将创建 rootScope 的全新子作用域。

3) 这里创建了一个新作用域,它将 $scope.variable 分配给新作用域,因此该变量仅在这个新作用域和父作用域中可用。

Q1:$new用于创建新的作用域

问题 2:'!0' 只不过是 'true'。在这种情况下,这将使 Angular 创建一个新的范围,该范围不会在原型上继承父范围(在这种情况下为 $rootScope)。

Q3:这是一个有效的 JS 语法,在执行结束时 $rootScope.compiledScope 会有一个新的独立作用域,而 $scope.variable 会有一些值

documentation 开始,$new 函数接受 2 个参数。

第一部分:

$new(isolate, parent);

isolate : If true creates isolate scope for the new scope that you are creating. Which basically means it wont inherit from the parent scope. It will inherit from the parent scope but parent scope properties wont be visible to it.

parent : $scope that will be the parent of newly created scope.

!0 : In most programming languages 0 == false. And negating that will give you true.

所以破译你的代码的第一部分:

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

将名为 compiledScope 的 属性 添加到您的 $rootScope 中,其值将是一个新的独立作用域,其父级为 $rootScope。

isolate scope : Scope that does not prototypically inherit its parent scope. Its is basically an empty scope and non of its parent's properties are visible to it.

第二部分

$scope.variable = "someValue";

variable 附加到 $scope 并将其值设置为 someValue。中间的逗号只是分隔 2 条语句,就像做的一样:

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