作用域$scope是构成AngularJS应用的核心基础,在整个框架中都被广泛使用,因此了解它是非常重要的。

$scope对像是定义应用业务逻辑,控制器方法和视图属性的地方。作用域是视图和控制器之间的胶水。
 
作用域是应用状态的基础,基于动态绑定。我们可以依赖视图在修改数据时立刻更新$scope,也可以依赖$scope在起发生变化时立刻重新渲染视图。
将应用的业务逻辑都放在控制器中,而将相关的数据都放在控制器的作用域中,这是非常完美的架构。
 
$scope对象在AngularJS中充当数据模型,但与传统的数据模型不一样。它并不负责处理和操作数据,它只是视图和HTML之间的桥梁,它是视图和控制器之间的胶水。
 
<div ng-app="myApp">
  <h2>Hello {{} name }</h2>
</div>
<script type="text/javascript">
  angular.module("myApp", [])
    .run(function($rootScope) {
      $rootScope.name = "lin";
    });
</script>
 
作用域能做什么:

第一:提供观察者以监视数据模型的变化。
第二:可以将数据模型的变化通知给整个应用,甚至是系统外的组件。
第三:可以进行嵌套,隔离业务功能和数据。
第四:给表达式提供运算时所需的执行环境。
 
$scope的生命周期的四个不同阶段:
第一:创建-在创建控制器或指令的时候,AngularJS会用$injector创建一个新的作用域,并在这个新建的控制器或指令运行时将作用域传递进去。
第二:链接-当AngularJS开始运行时,所有的$scope对象都会附加或者链接到视图中,所有创建$scope对象的函数也会将自身附加到视图中。这些作用域将会注册当AngularJS应用上下文中发生变化时需要运行的函数。
第三:当事件循环运行时,它通常执行在顶层$scope对象上(被称作$rootScope),每个子作用域都执行自己的脏值检测。每个监控函数都会检查变化。如果检测到任意变化,$scope对象就会触发指定的回调函数。
第四:当一个$scope在视图中不再需要时,这个作用域将会清理和撤销自己。尽管永远不会需要清理作用域(因为AngularJS会为你处理),但是知道是谁创建了这个作用域还是有用的,因为你可以使用这个$scope上叫做$destroy()的方法来清理这个作用域。

AngularJS入门基础——作用域的更多相关文章

  1. AngularJS入门基础PPT(附下载链接)

    学习了Angularjs有段时间,自己写了一个PPT,个人认为总结的非常全面,对于入门基础够了. 大致模块有:Angularjs简单介绍,Angularjs特性,hello world,Control ...

  2. AngularJS入门基础——表达式

    表达式在AngularJS应用中广泛的使用,因此深入理解AngularJS如何使用并运算表达式是非常重要的.   表达式和eval非常相似,但是由于表达式由AngularJS来处理,它们有已下显著不同 ...

  3. AngularJS入门基础——控制器

    AngularJS中的控制器是一个函数,用来向视图的作用域添加额外的功能.我们用它来给作用域对象设置初始状态,并添加自定义行为. AngularJS同其他JavaScript框架最主要的一个区别就是, ...

  4. angularjs入门基础一

    app.controller('firstController',function($scope,$rootScope){ $scope.name='张三'; $rootScope.age='30'; ...

  5. AngularJS入门基础——$provide.decorator 实例讲解

    <body ng-controller="OneController"> <script>  var Foobar = function() {      ...

  6. AngularJS入门基础——表单验证

    <form name="form" novalidata>   <label name="email">your email</l ...

  7. AngularJS入门基础——过滤器

    在HTML中的模板绑定符号{{ }}内通过 | 符号来调用过滤器 {{ name | uppercase }}   以HTML的形式使用过滤器时,如果需要传递参数给过滤器,只要在过滤器名字后面加冒号即 ...

  8. AngularJS实用基础知识---入门必备

    前言 今天来和大家学习一下AngularJS-- AngularJS 通过新的属性和表达式扩展了 HTML. AngularJS 可以构建一个单一页面应用程序. AngularJS 学习起来非常简单. ...

  9. AngularJS入门心得1——directive和controller如何通信

    粗略地翻了一遍<JavaScript DOM编程艺术>,就以为可以接过AngularJS的一招半式,一个星期过去了,我发现自己还是Too Young,Too Simple!(刚打照面的时候 ...

随机推荐

  1. Tkernel Package NCollection哈希基础的类

    OpenCASCADE内用到了很多由诸如NCollection_Map, NCollection_DataMap, NCollection_DoubleMap, NCollection_Indexed ...

  2. mssql循环记录之while方法

    1.定义变量 Declare @i Int 2.获取单条记录 Select @i=Min([id]) From [数据库名] Where <检索条件> 3.While循环 While @i ...

  3. 微软职位内部推荐-Senior Software Engineer_HPC

    微软近期Open的职位: Job Title: Senior Software Engineer_HPC Location: Shanghai, China Are you passionate ab ...

  4. PHP学习 文件访问和写入

    <?php $path = $_SERVER['PHP_SELF']; //PHP_SELF:当前执行脚本的文件名,与 document root 有关 echo basename($path) ...

  5. 小组冲刺第十四天站立会议(Beta版发布)

    注: “助成”招聘网站链接:http://58.87.74.131:8080/zhucheng 欢迎大家进行评测. 一.任务看板: 二.燃尽图: 三.任务总结: 根据前期收集的用户反馈,再次对网站进行 ...

  6. YQCB冲刺第二周绩效评价

    标准队员 工作质量 20% 工作态度 20% 工作量 30% 工作难易程度 20% 团队意识 10% 总分 陈美琪 17 18 24 17 9 85 张晨阳 19 19 27 19 9 93 刘昭为 ...

  7. python项目离线环境配置指南

    参考文献: http://blog.csdn.net/candcplusplus/article/details/52156324 https://www.cnblogs.com/michael-xi ...

  8. 课堂final发布

    项目组名:奋斗吧兄弟 小组成员:黄兴.李俞寰.栾骄阳.王东涵.杜桥 今天6个小组在课上进行了Final发布,以下是我的一些看法: 1.Nice团队的约跑app: 今天Nice团队给我的最突出的印象就是 ...

  9. Easy-UI开发总结

    Easy-UI开发总结 jQuery EasyUI 简介 jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用户界面插件. 什么是 jQuery EasyUI jQuery Ea ...

  10. maven依赖包冲突解决思路

    1.显示依赖关系mvn dependency:tree > tree.txt显示所有依赖关系,并输出到text.txtmvn dependency:tree -Dverbose > tre ...