为什么是$ ChildScope。$ parent。$ parent。$ root。$ root ...是螺旋式的?

时间:2015-06-22 01:10:32

标签: javascript angularjs

我是angular / js的新手,并尝试使用Sails构建应用程序。

当我创建一个index.html时,我用它在控制台上打印$ scope值的控制器,我看到了附带的截图。

<div class="container" ng-controller='angHomeController'>

这是我的控制器

angular.module('myApp').controller('angHomeController', function($scope, $location) {
  console.log($scope);
});

这就是我在控制台上看到的内容。enter image description here

出现在我脑海中的许多问题中,很少有人在下面。

在进入开发/创建/使用模板控制器变量/闭包/回调之前,我想了解一些相关的事情。

Q值。 #1。树的深度是 - $ ChildScope。$ parent。$ parent(继承自Scope)。我看到$ ChildScope。$ parent。$ parent。$$监听器作为locationChangeStart,locationChangeSuccess和routeChangeSuccess数组及其 proto (s)。我可以认为这个$ parent。$ parent是由Sails MVC Framework使用$ routeProvider API创建的吗?

Q值。 #2。我认为树中最顶层的$ ChildScope是由$ rootScope上的ng-controller创建的。$ new。但是,我仍然很感兴趣为什么树是$ ChildScope。$ parent。$ parent,而不是$ ChildScope。$ parent?我错过了什么吗? $ ChildScope。$ parent没有观察者或听众。当然,$ ChildScope没有任何听众,因为我还没有创造任何活动。

Q值。 #3。我还观察到$ ChildScope。$ parent没有$ root,但$ ChildScope。$ parent。$ parent。$ root是现有的,它似乎是对$ ChildScope的引用。$ parent。$ parent。此外,$ ChildScope。$ parent。$ parent。$ root。$ root ...是螺旋式的,不会结束。最后一个$ parent的引用是$ root,它有一个$ root,依此类推。为什么这个根链不存在?它从哪里引用?

1 个答案:

答案 0 :(得分:0)

角度范围&#39;模仿&#39;应用程序的DOM结构。

为Angular App,每个Angular控制器和一些指令创建了范围(如果您确实指定该指令应该创建或重用范围)。

使用$ scope。$ parent。$ parent不建议使用,因为它非常脆弱。如果更改角度控制器或DOM树周围的任何指令,则范围层次结构将受到影响。

我建议在有角度的网站上阅读What are scopes