【angularJS】$Scope

$Scope

Scope(作用域)是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带,用来保存AngularJS Model(模型)的对象。

Scope 是一个对象,有可用的方法和属性。Scope 可应用在视图和控制器上。angularJS中的mvc是借助于$scope实现的

$scope对象的生命周期处理有四个不同阶段:

  1>.创建

  在创建控制器(Controller)或指令时,AngularJS会用$injector创建一个新的作用域($scope),并在这个新建的控制器(Controller)或指令运行时注入作用域($scope)。

  2>.链接

  当Angular开始运行时,所有的$scope对象都会附加或者链接到视图中。

  所有创建$scope对象的函数也会将自身附加到视图中。

  这些作用域将会注册当Angular应用上下文中发生变化时需要运行的$watch函数。

  3>.更新

  当事件循环运行时,它通常执行在顶层$scope对象上(被称作$rootScope),每个子作用域都执行自己的脏值检测。每个监控函数都会检查变化。如果检测到任意变化,$scope对象就会触发指定的回调函数。

  4>.销毁

  当一个$scope在视图中不再需要时,这个作用域将会清理和销毁自己。

 $rootScope

AngularJS启动并生成视图时,会将根ng-app元素同$rootScope【根作用域】进行绑定。$rootScope是所有$scope对象的最上层。

所有的应用都有一个 $rootScope,它可以作用在 ng-app 指令包含的所有 HTML 元素中。

$rootScope 可作用于整个应用中。是各个 controller 中 scope 的桥梁。

用 rootscope 定义的值,可以在各个 controller 中使用。不建议在$rootScope上绑定太多业务逻。

创建控制器时,将 $rootScope 作为参数传递,可在应用中使用:

app.controller('myCtrl', function($scope, $rootScope) {

$scope.text = "Hello AngularJS!";

});

ng-controller指令为这个DOM元素创建了一个新的$scope对象,并将它嵌套在$rootScope中。

$scope与$rootScope具有相同属性或方法时,$scope将覆盖$rootScope中相同属性或方法

 

posted @ 2018-12-10 20:27  peterYong  阅读(378)  评论(0编辑  收藏  举报