angular中的作用域的那些事儿

来源:互联网 发布:查看产品淘宝客佣金 编辑:程序博客网 时间:2024/05/21 11:32

理解Angular的作用域(scope)相当重要,因为scope是链接javascript和HTML之间的纽带(视图上的所有的数据基本上都是在作用域中定义好之后“绑定”在HTML上的)。用正规点的话说,作用域是定义应用业务逻辑,控制器方法和视图属性的地方(毕竟都是$scope.....$scope....等等),有人说,作用域($scope)是视图和控制器之间的胶水,这个还是比较形象的,毕竟在应用中控制器中通过作用域来定义一些方法,属性等,然后在视图中需要在适当的位置引用即可。也可以把作用域理解成视图模型(VM)

angular中的作用域设计成了类似于DOM的结构这就意味着,$scope可以嵌套,也就是说我们可以在子$scope中引用父$scope中定义的属性或者方法。

AngularJS启动并生成视图时,会将根ng-app元素同$rootScope进行绑定。$rootScope是所有$scope对象的最上层 (父作用域)$rootScope 可作用于整个应用中。是各个 controller 中 scope 的桥梁。用 rootscope 定义的值,可以在各个 controller 中使用。
那么说了这么多,作用域究竟能干些什么呢?

作用域有以下的基本功能:

1.提供观察者以监视数据模型的变化;
2.可以将数据模型的变化通知给整个应用,甚至是系统外的组件;
3. 可以进行嵌套,隔离业务功能和数据;
4. 给表达式提供运算时所需的执行环境 ;
作用域的生命周期:

创建:在创建控制器或者指令的时候,angularjs就通过$injector创建一个新的作用域(相当于隔离出来了一块作用域;

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

更新:当事件循环运行时,它通常执行在顶层$scope对象上(被称作$rootScope),每个子作用域都执行自己的脏值检测,根据检测的结果决定是否执行回调函数;

销毁:当一个$scope在视图中不再需要时,这个作用域将会清理和销毁自己,不过,你可以使用这个$scope上叫做$destory()的方法来清理这个作用域

原创粉丝点击