AngularJS 笔记系列(三)模块和作用域
模块:
在 AngularJS 中,将函数代码全部都定义在全局命名空间中绝对不是什么好主意,全局变量污染会使冲突几率变大,调试困难,降低开发效率。上次写计时器的 controller 时,我们把 controller 写在了一个全局命名空间中定义的函数里,这就是反例。在 Angular 中,模块是定义应用的主要方式。模块包含了主要的应用代码。一个应用可以包含多个模块,每一个模块内都包含了定义具体功能的代码。
使用模块的好处有很多:
- 保持全局命名空间的整洁;
- 便于测试;
- 可以复用;
- 使应用可以以任意顺序加载代码各个部分。
定义模块方法:
angular.module('moduleName',[]);
参数:
1. name (字符串)
模块的名称
2. requires (字符串数组)
Angular 的依赖注入机制,数组元素为当前定义模块所依赖的模块名称。
作用域:
作用域(scope)是构成 Angular 应用的核心基础。应用的作用域是和应用的数据模型相关联的,同时作用域也是表达式执行的上下文。$scope 是定义应用业务逻辑,控制器方法和视图属性的地方。
作用域是视图和控制器之间的胶水。在应用渲染并呈现给用户之前,视图中的模板会和作用域进行连接,然后应用会对 DOM 进行设置以便将属性变化通知给 AngularJS。这个功能让 XHR请求等 promise 对象的实现变得非常容易。
$scope 是可以嵌套的,在子$scope中我们可以引用父$scope 的属性,就像 JavaScript 一样。这个分层就是,当我们为子级 DOM 元素创建了一个新的作用域时,其实也是为子元素创建了一个新的执行上下文。
作用域提供了监视数据模型变化的能力,我们可以使用 $apply 机制,将数据模型的变化在整个应用范围内进行通知。
$rootScope 是 Angular 中最接近全局作用域的对象。所以不要在它上面附加太多业务逻辑,这跟污染全局作用域是一样的。
$scope 就是一个JavaScript对象,我们可以为它添加或者删除属性,他的所有属性都可以自动被视图访问到。它是视图和控制器之间的胶水,也是视图与 HTML 的桥梁。
生命周期:
创建:在创建控制器或者指令时,AngularJS 会同时用$injector 创建一个新的作用域,并在指令或者控制器运行时将该作用域传递进去。
链接:当 Angular 开始运行时,所有的$scope 对象都会附加或者链接到视图中。所有创建$scope 对象的函数也会将自身附加到视图中。
这些作用域将会注册当Angular 应用上下文变化时需要运行的函数。
更新:事件循环运行在$rootScope上,在每个子作用域中进行脏值检查,发现任意变化,即可执行相应的回调函数。
销毁:当一个$scope 在视图中不再被需要时,他将被销毁。
AngularJS 笔记系列(三)模块和作用域的更多相关文章
- Python基础笔记系列三:list列表
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! python中的list列表是一种序列型数据类型,一有序数据集合用逗号间隔 ...
- AngularJS 笔记系列(四)控制器和表达式
控制器:在 Angular 中控制器是一个函数,用来向作用域中添加额外的功能.我们用它来给作用域对象设置初始状态,并添加自定义行为. 使用方法: var app = angualr.module('a ...
- Java基础复习笔记系列 三
前几节都是基础中的基础,从第三讲的笔记开始,每次笔记针对Java的一个知识块儿. Java异常处理 1.什么是异常? 异常是指运行期出的错误.比如说:除以一个0:数组越界:读取的文件不存在. 异常处 ...
- Android群英传笔记系列三 view的自定义:实现一个模拟下载
1.实现效果:动态显示进度(分别显示了整个的动态改变的过程,然后完成后,弹出一个对话框) 2.实现过程:可以分为绘制一个圆,圆弧和文本三部分,然后在MainAcitivity中通过线程模拟 ...
- 《ASP.NET Core In Action》读书笔记系列三 ASP.NET Core如何处理请求的?
在本节中,您将看到ASP.NET Core应用程序如何运行的,从请求URL开始到页面呈现在浏览器中. 为此,您将看到 一个HTTP请求在Web服务器中是如何被处理的.ASP.NET Core如何扩展该 ...
- LeetCode 笔记系列三 3Sum
题目:Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all ...
- AngularJS 笔记系列(五)过滤器 filter
过滤器是用来格式化给用户展示的数据的. 在 HTML 中的模板绑定符号{{}} 内通过|符号来调用过滤器. 大写:{{ name | uppercase }} 也可以在 JS 中进行调用$filter ...
- Spring框架系列(三)--Bean的作用域和生命周期
Bean的作用域 Spring应用中,对象实例都是在Container中,负责创建.装配.配置和管理生命周期(new到finalize()) Spring Container分为两种: 1.BeanF ...
- Windows-universal-samples学习笔记系列三:Navigation
Navigation Back Button Master/detail Navigation menu (XAML) Pivot Projection XHR, handling navigatio ...
随机推荐
- 在Swing的组件中,基本上都是在AWT组件的名称前面加“J”
在Swing的组件中,基本上都是在AWT组件的名称前面加“J”. 一般情况下,除了Choise等组件: import javax.swing.*;好要加上:import java.awt.*以及imp ...
- $-------JSP中表达式语言的$特殊字符的作用
JSP 中EL表达式用法详解 EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便.接下来介绍EL主要的语法结构: ${sessionScope.user ...
- PHP常用技术文之文件操作和目录操作总结
<?php header("content-type:text/html;charset=utf-8"); /* *声明一个函数,传入文件名获取文件属性 *@param st ...
- 关于js中遍历总结
1.for循环 var arr = []; for (var i = 0; i < arr.length; i++) { if (条件1) return; if (条件2) break; if ...
- python pycurl属性
pycurl.Curl() #创建一个pycurl对象的方法 pycurl.Curl(pycurl.URL, http://www.google.com.hk) #设置要访问的URL pycurl.C ...
- js控制radio选中
经常会遇到js控制radio选中和切换的问题 之前一直使用的是checked属性来完成的 但是现在发现这个属性有个大问题 今天就是用js给选中radio的赋值,使用的$().attr("ch ...
- 使用HTML5 WebStorage API构建与.NET对应的会话机制
HTML5的Web Storage API,我们也称为DOMStarage API,用于在Web请求之间持久化数据.在Web Starage API 出现之前,我们都是将客户端和服务端之间的交互数据存 ...
- m2014_c->c语言容器类工具列
转自:http://www.cnblogs.com/sniperHW/category/374086.html cocos2dx内存管理 摘要: cocos2dx基于引用计数管理内存,所有继承自CCO ...
- 匿名(无账号密码)从ftp服务器下载文件
public static String downFile(String ip,String ftpFileName,String savePath,String fileName) { FTPCli ...
- Netty 服务端创建
参考:http://blog.csdn.net/suifeng3051/article/details/28861883?utm_source=tuicool&utm_medium=refer ...