AngularJS $ scope层次结构
时间:2020-01-09 10:34:01 来源:igfitidea点击:
AngularJS中的视图使用的$ scope对象被组织成一个层次结构。有一个根作用域,并且该根作用域有一个或者多个子作用域。每个视图都有自己的$ scope(是根作用域的子级),因此,无论一个视图控制器在其$ scope`变量上设置了什么变量,其他控制器都看不到这些变量。
看一下这个AngularJS代码示例:
<!DOCTYPE html> <html lang="en"> <head> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular.min.js"></script> </head> <body ng-app="myapp"> <div ng-controller="myController1"> {{data.theVar}} </div> <div ng-controller="myController2"> {{data.theVar}} </div> <script> var module = angular.module("myapp", []); var myController1 = module.controller("myController1", function($scope) { $scope.data = { theVar : "Value One"}; }); var myController2 = module.controller("myController2", function($scope) { $scope.data = { theVar : "Value Two"}; }); </script> </body> </html>
本示例包含两个视图,每个视图都有自己的控制器功能。每个控制器将变量" data.theVar"设置为不同的值。
执行此示例时,$ scope
层次结构将如下所示:
- 根$ scope $ scope for myController 1
- $ scope为myController 2
如我们所见,两个控制器使用的$ scope对象不是同一个$ scope对象。这就是为什么上面的示例将在两个视图内为数据绑定" {{data.theVar}}"写出两个不同的值的原因。视图的两个控制器函数在各自的$ scope对象中为data.theVar变量设置了不同的值。