Angularjs Scope 详解
来源:互联网 发布:ubuntu 启动apache2 编辑:程序博客网 时间:2024/05/17 01:25
Whatis scope
scope 的使用贯穿整个AngularJS App应用,它与数据模型相关联,同时也是表达式执行的上下文.有了$scope就在视图和控制器之间建立了一个通道,基于作用域视图在修改数据时会立刻更新$scope,同样的$scope发生改变时也会立刻重新渲染视图
$rootscope:AngularJS应用启动并生成视图时,会将根ng-app元素与$rootScope进行绑定.$rootScope是所有$scope的最上层对象,可以理解为一个AngularJS应用中得全局作用域对象
$scope:$scope对象在AngularJS中充当数据模型的作用,$scope并不处理和操作数据,它只是建立了视图和HTML之间的桥梁.
scope桥梁
scope 的生命周期有4个阶段:
1.创建
控制器或者指令创建时,AngularJS会使用$injector创建一个新的作用域,然后在控制器或指令运行时,将作用域传递进去.
2.链接
AngularJS 启动后会将所有$scope 对象附加或者说链接到视图上,所有创建$scope对象的函数也会被附加到视图上.这些作用域将会注册当AngularJS上下文发生变化时需要运行的函数.也就是$watch函数,AngularJS通过这些函数或者何时开始事件循环.
3.更新
一旦事件循环开始运行,就会开始执行自己的脏值检测.一旦检测到变化,就会触发$scope上指定的回调函数
4.销毁
$scope在视图中不再需要,AngularJS会自己清理它.当然也可以通过 $destroy()函数手动清理.
angularJS指令对象的scope属性
1.angularJS自定义指令的时候$scope默认false,指令作用域即指令元素所在的作用域也就是父作用域,false时不创建新作用域,父与子类作用域数据相同且同步更新
2.angularJS自定义指令的时候$scope为true时,表示子作用域是独立创建的,子变化并不会修改父的内容;一旦某个属性内容被子作用域重置了,即使父作用域中的内容变化子作用域的相对应的内容也不发生变化
angularJS指令对象的scope属性
1.angularJS自定义指令的时候$scope设置成一个json对象,父作用域与子作用域完全独立,不存在任何关联
2..angularJS自定义指令的时候$scope设置成一个json对象,如果子作用域需要添加属性,必须先添加指令中的link函数,然后通过函数中scope对象进行添加;如果在子作用域中要绑定或调用父作用域中的属性和方法,则需要在scope属性对应的json对象值中添加绑定策略(@、=、&)
三种绑定策略
@绑定({{}})
子作用域重置内容之前:父影响子,子不干扰父(这点与scope=true相同)
子作用域重置内容之后:父影响子,子不干扰父(scope=true子作用域随父作用域变化只在子作用域重置之前,之后不会随之变化)
=绑定(=)
父子共享共通,同步变化
&绑定
独立的子作用域直接调用父作用域的方法,调用时可以传递实参数
- AngularJS scope destroy 详解
- Angularjs Scope 详解
- AngularJS内幕详解之 Scope
- AngularJS内幕详解之 Scope
- angularjs $scope.$apply 方法详解
- AngularJS内幕详解之 Scope
- AngularJS内幕详解之 Scope
- AngularJS 指令的 Scope (作用域)详解
- AngularJs之Scope作用域(详解)
- angularJs自定义指令的scope配置详解
- AngularJS scope
- AngularJs--Scope
- AngularJS: $scope
- AngularJS 中的scope($scope)
- AngularJS 指令的 Scope 作用域的详解
- Angularjs中scope与$scope
- AngularJs学习笔记--Scope
- angularjs $scope.$apply()
- miniGUI3.0.12移植到Hi3531
- Android 5.0以上 获取当前正在运行的应用包名
- Android设计模式 单例模式(枚举单例)
- Java代码优雅之道-Guava
- miniGUI3.0.12移植到Hi3531
- Angularjs Scope 详解
- 开发经验总结(一)
- Android初学习 - 基础&进阶总结
- Boost中的单利模式
- cvc-complex-type.2.4.c: 通配符的匹配很全面, 但无法找到元素 'dubbo:application
- 使用FormData对象
- vs2008+Qt 编译MySQL驱动
- ios保存录制好的视频到相簿的方法
- MySQL 用户执行存储过程的权限