AngularJS学习笔记(一)模块、作用域、双向数据绑定

AngularJS四大核心特性:MVC、模块化、指令系统、双向数据绑定。
  • MVC
image.png

好处:职责清晰,代码模块化,可复用(特别是Model和View)。

  • 模块
    一切都是从模块开始。
    一个应用可包含多个模块,每一个模块都包含了定义具体功能的代码。
    使用模块的好处:
  1. 保持全局命名空间的清洁
  2. 编写测试代码更容易,并能保持其清洁,以便更容易找到相互隔离的功能
  3. 易于在不同应用间复用代码
  4. 使应用能够以任意顺序加载代码的各个部分
    使用angular.module()的方法来声明模块:
//接受两个参数,第一个是模块的名称,第二个是依赖列表,即可以被注入到模块中的对象列表。
angular.module('myApp',[]);

如果调用这个方法时只传递一个参数,那么该方法只用来引用该模块:

//引用名为myApp的模块
angular.module('myApp');
  • 作用域
    作用域是什么?
  1. 是表达式执行的上下文
  2. 是定义应用业务逻辑、控制器方法和视图属性的地方
  3. 是视图和控制器之间的胶水,在应用将视图渲染并呈现给用户之前,视图中的模板和作用域进行连接,然后应用会对DOM进行设置以便将属性变化通知给AngularJS
  4. 作用域提供了监视数据模型变化的能力
  5. 将应用的业务逻辑都放在控制器中,将相关的数据都放在控制器的作用域中,是比较完美的架构
  6. $scope对象在AngularJS中充当数据模型,但与传统的数据模型不一
    样,$scope并不负责处理和操作数据,它只是视图和HTML之间的桥梁,它的所有属性都可以自动被视图访问到

关于作用域的简单代码:

<body>
   <div ng-app="myApp">
       <h1>Hello {{name}}</h1>
   </div>
</body>
<script>
    angular.module('myApp',[]).run(function($rootScope){//$rootScope是所有$scope对象的最上层,AngularJS启动并生成视图时,会将根ng-app元素同$rootScope进行绑定
        $rootScope.name = "World"
    })
</script>

运行结果:

image.png

但在实际情况中,我们一般不会在$rootScope上附加业务逻辑,以免污染全局作用域。我们可以用控制器创建一个隔离的子$scope对象:

<body>
   <div ng-app="myApp">
       <div ng-controller="MyController">
           <h1>Hello {{name}}</h1>
       </div>
   </div>
</body>
<script>
    angular.module('myApp',[]).controller('MyController',
         function($scope){
             $scope.name = "World";
         }
    )
</script>

运行结果同上。

作用域的基本功能有:

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

$scope对象的生命周期处理有四个不同阶段:

  1. 创建
    创建新控制器或指令时,AngularJS会创建一个新的作用域。
  2. 链接
    当AngularJS开始运行时,所有的$scope对象都会附加或者链接到视图中。
  3. 更新
    当事件循环运行时,它通常执行在$rootScope对象上,每个子作用域都执行自己的脏值检测。
  4. 销毁
    当一个$scope在视图中不再需要时,这个作用域会清理和销毁自己。
  • 双向数据绑定
    简单来说双向数据绑定可以总结为下图:
image.png

数据绑定使我们可以将视图理解为模型状态的映射,当客户端的数据模型发生变化时,视图就能反映出这些变化。AngularJS会记录数据模型所包含的数据在任何特定时间的值,而非初始值。当AngularJS认为某个值可能发生变化的时候,它会运行自己的事件循环来检查这个值是否变“脏”,如果该值从上次事件循环运行之后发生了变化,则该值会被认为是“脏”值,这个过程被称作脏检查。AngularJS会在事件循环时执行脏检查来保证数据的一致性。

简单的双向数据绑定小例子:

<div ng-app="">
    <p>名字 : <input type="text" ng-model="name"></p>
    <h1>Hello {{name}}</h1>
</div>
  • 效果:
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容