角度范围;一个特例

Angular scope; a special case

本文关键字:一个 范围      更新时间:2023-09-26

让我们考虑一个非常简单的代码:

<div id="main" ng-app='myapp' ng-init="qty=1;cost=2">
  <div>
    Quantity: <input type="number" ng-model="qty">
  </div>
</div>

在 Chrome 的控制台中:

var x=angular.element('#main').scope();

返回:

Scope {$id: 1, $$childTail: ChildScope, $$childHead: ChildScope, $$prevSibling: null, $$nextSibling: null…}

我的问题:通过控制台以什么方式访问上述 Scope 对象?当比较返回 true 时,我必须在右侧写什么?

x.__proto__===*.Scope.prototype

x.__proto__ returns Scope{}年以来.此范围对象位于何处?

构造函数/函数Scope故意不向控制台公开。它是在角度库深处的IIFE中定义的 - 特别是在$RootScopeProvider函数中。您需要知道的是,您可以使用 scope 对象的 $new() 方法创建新范围 - 无需直接访问此构造函数方法。