作用域的概念及其功能

AngularJS使用作用域的概念来充当数据模型的作用,在视图和控制器之间起着桥梁的作用。由于双向绑定的数据特性,视图的修改会更新 $scope,同样对 $scope的修改也会重新渲染视图。AngulaJS将 $scope设计成DOM类似的结构, $scope可以嵌套,同时也可以引用父级 $scope的属性。作用域提供监视数据模型变化的能力,允许开发者使用其中的apply机制,将数据模型的变化在整个应用范围内进行通知。

作用域的功能可以总结为以下几点:

  1. 提供观察者( $watch)以监视数据模型的变化
  2. 将数据模型的变化通知整个应用
  3. 可以嵌套,隔离业务功能和数据
  4. 创建表达式运算所需的执行环境

$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的生命周期处理主要包含以下几个阶段:

  1. 创建: AngularJS启动时,会使用 $injector创建一个新的作用域,将作用域传进相应的控制器或指令中

    注意: AngularJS除了ng-controller和ng-repeat指令会创建自己的子作用域,一般不会创建自己的 $scope

  2. 链接: AngularJS运行时,所有的 $scope对象都会链接到视图上,通过注册 $watch函数来获取数据变化通知

  3. 更新: AngularJS通过在顶层 $scope对象执行事件循环,每个自作用域都会执行自己的脏值检测,每个监控函数会检查变化,如果检测到变化,则 $scope对象触发指定的回调函数

  4. 销毁: $socpe上可以通过使用 $destoy()方法销毁作用域

AngularJS 第三天----作用域的更多相关文章

  1. Cookie&Seesion会话 共享数据 工作流程 持久化 Servlet三个作用域 会话机制

    Day37 Cookie&Seesion会话 1.1.1 什么是cookie 当用户通过浏览器访问Web服务器时,服务器会给客户端发送一些信息,这些信息都保存在Cookie中.这样,当该浏览器 ...

  2. AngularJS进阶(三十九)基于项目实战解析ng启动加载过程

    基于项目实战解析ng启动加载过程 前言 在AngularJS项目开发过程中,自己将遇到的问题进行了整理.回过头来总结一下angular的启动过程. 下面以实际项目为例进行简要讲解. 1.载入ng库 2 ...

  3. 现在就开始使用AngularJS的三个重要原因

    现在就开始使用AngularJS的三个重要原因 在线演示1 本地下载 如果你不熟悉什么是Angular.js的话,小编我强烈推荐你阅读 Javascript教程:AngularJS的五个超酷特性.简单 ...

  4. 【AngularJS】—— 12 独立作用域

    前面通过视频学习了解了指令的概念,这里学习一下指令中的作用域的相关内容. 通过独立作用域的不同绑定,可以实现更具适应性的自定义标签.借由不同的绑定规则绑定属性,从而定义出符合更多应用场景的标签. 本篇 ...

  5. 一招制敌 - 玩转 AngularJS 指令的 Scope (作用域),讲得特别好

    学习了AngularJS挺长时间,最近再次回首看看指令这部分的时候,觉得比自己刚开始学习的时候理解的更加深入了,尤其是指令的作用域这部分. 步入正题: 每当一个指令被创建的时候,都会有这样一个选择,是 ...

  6. AngularJS 指令的 Scope (作用域)

    参考:https://segmentfault.com/a/1190000002773689 每当一个指令被创建的时候,都会有这样一个选择,是继承自己的父作用域(一般是外部的Controller提供的 ...

  7. 精通AngularJS(三)深入scope,继承结构,事件系统和生命周期

    深入探讨 Scope 作用域 每一个 $scope 都是类 Scope 的一个实例.类 Scope 拥有可以控制 scope 生命周期的方法,提供事件传播的能力,并支持模板渲染. 作用域的层次结构 让 ...

  8. angularJs指令的Scope(作用域)

    每当一个指令被创建的时候,都会有这样一个选择,是继承自己的父作用域(一般是外部的Controller提供的作用域或者根作用域($rootScope)),还是创建一个新的自己的作用域,当然Angular ...

  9. JavaScript作用域原理(三)——作用域根据函数划分

    一.一个for实例 <p id="scope3" style="color:red"></p> var pscope3 = docume ...

随机推荐

  1. Android Studio 多个编译环境配置 多渠道打包 APK输出配置

    看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...

  2. ES6模块import细节

    写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...

  3. 04.SQLServer性能优化之---读写分离&数据同步

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 过段时间再继续写文章吧,本来准备把SQLServer一个系列写完的,最近状态很差很不好, ...

  4. UWP开发之Template10实践:本地文件与照相机文件操作的MVVM实例(图文付原代码)

    前面[UWP开发之Mvvmlight实践五:SuspensionManager中断挂起以及复原处理]章节已经提到过Template10,为了认识MvvmLight的区别特做了此实例. 原代码地址:ht ...

  5. 【HanLP】资料链接汇总

    Java中调用HanLP配置 HanLP自然语言处理包开源官方文档 了解HanLP的全部 自然语言处理HanLP 开源自由的汉语言处理包主页 GitHub源码 基于hanLP的中文分词详解-MapRe ...

  6. ZKWeb网页框架1.3正式发布

    本次更新的内容有 更新引用包版本 Microsoft.AspNetCore.Hosting.Abstractions 1.1.0 Microsoft.AspNetCore.Http.Abstracti ...

  7. ASP.NET MVC关于Ajax以及Jquery的无限级联动

    ---恢复内容开始--- 第一次发表博文,发表博文的目的是巩固自己的技术,也能够共享给大家.写的不好的地方,希望大家多给给意见.老司机勿喷 数据结构() NewsTypeId 新闻ID, NewsTy ...

  8. AutoMapper的介绍与使用(一)

    软件环境 vs2015 asp.net mvc 5 .NET Framework 4.5.2 AutoMapper 5.2.0.0 AutoMapper安装 新建asp.net mvc 项目 Auto ...

  9. javascript排序

    利用array中的sort()排序 w3cfunction sortNumber(a,b) { return a - b } var arr = new Array(6) arr[0] = " ...

  10. 【干货分享】流程DEMO-固定资产转移流程

    流程名: 固定资产转移  业务描述: 固定资产从某员工转移至另一员工,转出人与转入人必须不同  流程相关文件: 流程包.xml  流程说明: 直接导入流程包文件,即可使用本流程  表单:  流程:  ...