AngularJS 第三天----作用域
作用域的概念及其功能
AngularJS使用作用域的概念来充当数据模型的作用,在视图和控制器之间起着桥梁的作用。由于双向绑定的数据特性,视图的修改会更新 $scope,同样对 $scope的修改也会重新渲染视图。AngulaJS将 $scope设计成DOM类似的结构, $scope可以嵌套,同时也可以引用父级 $scope的属性。作用域提供监视数据模型变化的能力,允许开发者使用其中的apply机制,将数据模型的变化在整个应用范围内进行通知。
作用域的功能可以总结为以下几点:
- 提供观察者( $watch)以监视数据模型的变化
- 将数据模型的变化通知整个应用
- 可以嵌套,隔离业务功能和数据
- 创建表达式运算所需的执行环境
$rootScope & $scope
$rootScope是AngularJS最顶层的作用域,同ng-app元素进行绑定。一般的我们不会在 $rootScope附加太多的业务逻辑数据, $scope对象是普通的JS对象,可以访问到 $rootScope中的数据,我们一般选择在 $scope中添加修改我们的数据。scope中所有的数据都可以被视图自动的访问到。 如下代码所示:
<div ng-app = "myApp">
<h1>hello {{name}} </h1>
</div>
我们希望name是 $scope的一个属性,那么可以使用如下代码来实现这一点:
angular.module('myApp', [])
.run(function( $rootScope) {
$rootScope.name = "World";
});
这个例子中我们使用 $rootScope来绑定name的属性, 在视图中引用这个name属性来将它展示给用户。一般的我们不将变量直接设置在 $rootScope上,而是用控制器显示的创建 $scope对象,并把它设在这个对象中。那么代码可以修改为:
<div ng-app = "myApp">
<div ng-controller = "MyController">
<!--name的"作用域"限于MyController内-->
<h1>hello {{name}} </h1>
</div>
</div>
通过创建控制器来管理与其相关的变量,代码如下所示:
angular.module("myApp",[]).controller("MyController", function( $scope){
$scope.name = "Ari";
});
$socpe的生命周期
scope的生命周期处理主要包含以下几个阶段:
创建: AngularJS启动时,会使用 $injector创建一个新的作用域,将作用域传进相应的控制器或指令中
注意: AngularJS除了ng-controller和ng-repeat指令会创建自己的子作用域,一般不会创建自己的 $scope
链接: AngularJS运行时,所有的 $scope对象都会链接到视图上,通过注册 $watch函数来获取数据变化通知
更新: AngularJS通过在顶层 $scope对象执行事件循环,每个自作用域都会执行自己的脏值检测,每个监控函数会检查变化,如果检测到变化,则 $scope对象触发指定的回调函数
销毁: $socpe上可以通过使用 $destoy()方法销毁作用域
AngularJS 第三天----作用域的更多相关文章
- Cookie&Seesion会话 共享数据 工作流程 持久化 Servlet三个作用域 会话机制
Day37 Cookie&Seesion会话 1.1.1 什么是cookie 当用户通过浏览器访问Web服务器时,服务器会给客户端发送一些信息,这些信息都保存在Cookie中.这样,当该浏览器 ...
- AngularJS进阶(三十九)基于项目实战解析ng启动加载过程
基于项目实战解析ng启动加载过程 前言 在AngularJS项目开发过程中,自己将遇到的问题进行了整理.回过头来总结一下angular的启动过程. 下面以实际项目为例进行简要讲解. 1.载入ng库 2 ...
- 现在就开始使用AngularJS的三个重要原因
现在就开始使用AngularJS的三个重要原因 在线演示1 本地下载 如果你不熟悉什么是Angular.js的话,小编我强烈推荐你阅读 Javascript教程:AngularJS的五个超酷特性.简单 ...
- 【AngularJS】—— 12 独立作用域
前面通过视频学习了解了指令的概念,这里学习一下指令中的作用域的相关内容. 通过独立作用域的不同绑定,可以实现更具适应性的自定义标签.借由不同的绑定规则绑定属性,从而定义出符合更多应用场景的标签. 本篇 ...
- 一招制敌 - 玩转 AngularJS 指令的 Scope (作用域),讲得特别好
学习了AngularJS挺长时间,最近再次回首看看指令这部分的时候,觉得比自己刚开始学习的时候理解的更加深入了,尤其是指令的作用域这部分. 步入正题: 每当一个指令被创建的时候,都会有这样一个选择,是 ...
- AngularJS 指令的 Scope (作用域)
参考:https://segmentfault.com/a/1190000002773689 每当一个指令被创建的时候,都会有这样一个选择,是继承自己的父作用域(一般是外部的Controller提供的 ...
- 精通AngularJS(三)深入scope,继承结构,事件系统和生命周期
深入探讨 Scope 作用域 每一个 $scope 都是类 Scope 的一个实例.类 Scope 拥有可以控制 scope 生命周期的方法,提供事件传播的能力,并支持模板渲染. 作用域的层次结构 让 ...
- angularJs指令的Scope(作用域)
每当一个指令被创建的时候,都会有这样一个选择,是继承自己的父作用域(一般是外部的Controller提供的作用域或者根作用域($rootScope)),还是创建一个新的自己的作用域,当然Angular ...
- JavaScript作用域原理(三)——作用域根据函数划分
一.一个for实例 <p id="scope3" style="color:red"></p> var pscope3 = docume ...
随机推荐
- 通过adb方式给安卓手机截图的cmd批处理文件
@echo off rem 通过adb方式截图rem 需要安装adb ,一般安装了android sdk 默认带了adb ,路径为sdk目录的android-sdk\platform-toolsr ...
- [版本控制之道] Git 常用的命令总结(欢迎收藏备用)
坚持每天学习,坚持每天复习,技术永远学不完,自己永远要前进 总结日常开发生产中常用的Git版本控制命令 ------------------------------main-------------- ...
- [APUE]文件和目录(下)
一.mkdir和rmdir函数 #include <sys/types.h> #include <sys/stat.h> int mkdir(const char *pathn ...
- UIViewController生命周期-完整版
一.UIViewController 的生命周期 下面带 (NSObject)的方法是NSObject提供的方法.其他的都是UIViewController 提供的方法. load (NSObje ...
- CRL快速开发框架系列教程十二(MongoDB支持)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程十(导出对象结构)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- webstorm下载&&安装过程&&打开项目
一.webstorm下载 WebStorm 是jetbrains公司旗下一款JavaScript 开发工具.被广大中国JS开发者誉为"Web前端开发神器"."最强大的HT ...
- Android:Activity+Fragment及它们之间的数据交换.
Android:Activity+Fragment及它们之间的数据交换 关于Fragment与Fragment.Activity通信的四种方式 比较好一点的Activity+Fragment及它们之间 ...
- 全网独家MongoDB Certified DBA Associate考试认证视频
该视频意在让所有学员一次通过考试,避免重复考试而承担的巨额考试费用! 目前MongDB发展迅猛,有赶超mysql,和oracle看齐的苗头.在这个时候MongoDB也适时的推出了官方的认证考试&quo ...
- css实现文本框和下拉框结合的案例
html 代码部分 <div id="list-name-input" class="list-name-input"> <select ty ...