第一章.        初识Angular——Angular是MVW的Js框架。

第二章.        数据绑定——ViewModel中不仅可以含有变量,还可以还有事件。可以通过事件来控制变量的值改变。视图绑定着VM中的变量和事件。

第三章.        模块——可以使用angular.module()来声明模块。

如angular.module(‘myApp’,[])相当于Setter;angular.module(‘myApp’)相当于Getter。

第四章.        作用域——作用:监听变化,通知变化,隔离数据,提供环境。

$scope的生命周期:

  1. 创建:当创建控制器和指令时。通过$inject创建新的作用域。并在新建控制器和指令运行时传进去。
  2. 链接:把作用域添加到自己的视图上,并创建事件,以便检测作用域变量的变化。
  3. 更新:每个子作用域会进行脏值检测。当检测到变化时,会回调指定的函数。
  4. 销毁:不使用的时间,销毁。

第五章.        控制器——是可以嵌套的,所以作用域包含作用域。demohttp://jsbin.com/URuyoG/1/edit

第六章.        表达式——手动和自动解析。自动通过$digest.如{{}}。手动可以在控制器中控制,让表达式不按套路出牌。

$parse用来访问作用域的数据和函数。

第七章.        过滤器——内置自带过滤器,自定义过滤器,表单验证。

      1. 内置过滤器的两种使用方法{{name|uppercase}}和$filter(‘lowercase’)(“ACb”)
      2. 时间过滤器 {{ time | date:'y-MM-dd HH:mm:ss' }}2014-09-29 17:04:05
      3. filter 后面可以跟字符串,对象,函数
{{ ['Ari','Lerner','Likes','To','Eat','Pizza'] | filter:'e' }}

 <!-- ["Lerner","Likes","Eat"] -->

{{ [{

'name': 'Ari',

'City': 'San Francisco',

'favorite food': 'Pizza'

},{

'name': 'Nate',

'City': 'San Francisco',

'favorite food': 'indian food'

}] | filter:{'favorite food': 'Pizza'} }}

<!-- [{"name":"Ari","City":"SanFrancisco","favoritefood":"Pizza"}] -->

4.通过过滤器对象转成json

var person={};

  person.age=12;

  person.name="hehe";

  var p=$filter('json')(person);

5.limitTo截取字符串,正从头开始负从尾开始。

6.number 保留n位小数

7.orderBy 下面的例子不仅给出了如何按对象的字段排序还给出了如何使用两个参数的过滤器。

{{ [{
'name': 'Ari',
'status': 'awake'
},{
'name': 'Q',
'status': 'sleeping'
},{
'name': 'Nate',
'status': 'awake'
}] | orderBy:'name':true }}
<!--
[
{"name":"Q","status":"sleeping"},
{"name":"Nate","status":"awake"},
{"name":"Ari","status":"awake"}
]
-->

8.  uppercase lowercase

自定义过滤器:

下面是自定义函数
angular.module('myApp', [])
.filter('capitalize', function(){
return function(input){
if (input) {
return input[0].toUpperCase() + input.slice(1);
}
};
}).controller('MyController',function(){});
引用方式
{{ 'ginger loves dog treats' | lowercase | capitalize }}

7.2表单

可以验证的Input选项:required, ng-minlength, ng-pattern, name="email",type="number",自定义.

表单中控制变量formName.inputFieldName.propertyy.

1. 未修改:formName.inputFieldName.$pristine

2. 修改过:formName.inputFieldName.$dirty

3. 合法表单:formName.inputFieldName.$valid

4. 不合法表单:formName.inputFieldName.$invalid

5. 错误:formName.inputfieldName.$error

以上对应的css

.ng-pristine {}

.ng-dirty {}

.ng-valid {}

.ng-invalid {}

$parsers通常配合指令来用。当ngModelController中的$setViewValue()方法时。会逐个调用$parser.

demo:

 

angular.module('myApp')

.directive('oneToTen', function() {

return {

  require: '?ngModel',

  link: function(scope, ele, attrs, ngModel) {

if (!ngModel) return;

ngModel.$parsers.unshift(

function(viewValue) {

var i = parseInt(viewValue);

if (i >= 0 && i < 10) {

ngModel.$setValidity('oneToTen', true);

return viewValue;

} else {

ngModel.$setValidity('oneToTen', false);

return undefined;

}

$formatters

当绑定的ngModel值发生了变化,并经过$parsers数组中解析器的处理后,这个值会被传递给$formatters流水线

Demo

angular.module('myApp')

.directive('oneToTen', function() {

return {

require: '?ngModel',

link: function(scope, ele, attrs, ngModel) {

if (!ngModel) return;

ngModel.$formatters.unshift(function(v) {

return $filter('number')(v);

});

}

};

});

7.3下面是关于表单验证的常见例子:

1.异步验证

app.directive('ensureUnique', function ($http) {
return {
require: 'ngModel',
link: function (scope, ele, attrs, c) {
scope.$watch(attrs.ngModel, function (n) {
if (!n) return;
$http({
method: 'POST',
url: '/api/check/' + attrs.ensureUnique,
data: {
field: attrs.ensureUnique,
value: scope.ngModel
}
}).success(function (data) {
c.$setValidity('unique', data.isUnique);
}).error(function (data) {
c.$setValidity('unique', false);
});
});
}
};
});
<button type="submit"
ng-disabled="signup_form.$invalid"
class="button radius">Submit</button>

在失焦后显示验证信息

app.directive('ngFocus', [function () {
var FOCUS_CLASS = "ng-focused";
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, element, attrs, ctrl) {
ctrl.$focused = false;
element.bind('focus', function (evt) {
element.addClass(FOCUS_CLASS);
scope.$apply(function () {
ctrl.$focused = true;
});
}).bind('blur', function (evt) {
element.removeClass(FOCUS_CLASS);
scope.$apply(function () {
ctrl.$focused = false;
});
});
}
};
}]);

如果使用1.3可以使用ngMessage.

第八章、指令

1.指令通过关键字directive来定义。参数1.名字,参数2函数(返回值是个对象)。

2.向指令传递数据,创建隔离作用域指令对象有个Scope变量。

第九章 、内置指令

1.使用ng-include时AngularJS会自动创建一个子作用域

2.ng-switch          when on配合使用。

<div ng-switch on="person.name">
<p ng-switch-default>And the winner is</p>
<h1 ng-switch-when="Ari">{{ person.name }}</h1>
</div>

3.ng-class动态设置元素类。

<div ng-class="{red: x > 5,blue:x<=5}" >或<div ng-class="{true: 'active', false: 'inactive'}[isActive]">

第十章、指令的详解

10.1.定义:名字和函数(返回值为对象。对象属性如下)

restrict: String,
priority: Number,
terminal: Boolean,
template: String or Template Function:
function(tElement, tAttrs) (...},
templateUrl: String,
replace: Boolean or String,
scope: Boolean or Object,
transclude: Boolean,
controller: String or
function(scope, element, attrs, transclude, otherInjectables) { ... },
controllerAs: String,
require: String,
link: function(scope, iElement, iAttrs) { ... },

1.restrict类型

2.priority优先级 默认为0 越大越先

3.terminal是否停止优先级比较低的

4.template(字符串或函数)

5templateUrl(字符串或函数)

6replace 是否替换原来的标签。默认为不替换,即插入。

7.scope

<input type="text" ng-model="to"/>
<!-- 调用指令 -->
<div scope-example ng-model="to"
on-send="sendMail(email)"
from-name="ari@fullstack.io" />
scope: {
ngModel: '=', // 将ngModel同指定对象绑定
onSend: '&', // 将引用传递给这个方法
fromName: '@' // 储存与fromName相关联的字符串
}

8.transclude(看不懂用到时再去理解吧)

9.controller(字符串或函数)看不懂用到时再去理解吧

10.controllerAs(字符串)看不懂用到时再去理解吧

11.require(字符串或数组)用到的Controller名称集合。

12.compiled和link互斥,如果两个都有compiled函数当link的函数使用。

viewValue通过验证后才会赋值给modelValue。

13.ngModel属性$viewValue,$modelValue,$parsers,$formatters,$viewChangeListeners….form相似的一些属性$error.$dirty等。

 

在控制器中定义$render方法可以定义视图具体的渲染方式。这个方法会在$parser流水线

完成后被调用。

Angular权威指南学习笔记的更多相关文章

  1. Angular权威指南学习笔记(转)

    http://www.cnblogs.com/lzhp/p/4000741.html 第一章.        初识Angular——Angular是MVW的Js框架. 第二章.        数据绑定 ...

  2. HTTP权威指南-学习笔记

    目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...

  3. JavaScript 权威指南-学习笔记(一)

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! ## JavaScript 权威指南-学 ...

  4. CSS权威指南学习笔记系列(1)CSS和文档

    题外话:HTML是一种结构化语言,而CSS是它的补充:这是一种样式语言.CSS是前端三板斧之一,因此学习CSS很重要.而我还是菜鸟,所以需要加强学习CSS.这个是我学习CSS权威指南的笔记,如有不对, ...

  5. Hadoop权威指南学习笔记二

    MapReduce简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.n ...

  6. Hadoop权威指南学习笔记一

    Hadoop简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出.一起学习一起进步. 转载请注明:http://blog.csdn.net/ ...

  7. Hadoop权威指南学习笔记三

    HDFS简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考.有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my ...

  8. IDA Pro权威指南学习笔记(一)

    一直不懂逆向,最近刚好不忙,于是学习逆向,用来做笔记,顺便和大家分享交流. 参考书籍<IAD PRO权威指南> 工具: PETools: ETools 是另一款很好的PE文件编辑工具,以前 ...

  9. css权威指南学习笔记 —— css选择器

    1,选择器:选择器的一些基本常用规则基本都记得,w3c上都有,平时也常用,不常用的一些后代选择器经常就忘记了.一些归纳一下后代选择器,加深一下印象: a:子选择器:   p>a  a是直接是p的 ...

随机推荐

  1. 【原】PSD图标素材的全自动切图方法,适用于IOS、安卓、web前端等领域

    屌丝个人开发者经常遇到的尴尬问题是,自己不会设计UI素材又请不起专业的美工.最好的方式是去网上下载符合自己需求的素材修修改改直接用上.但是,在这个过程中会发现很多下载下来的素材是PSD格式的,很多图标 ...

  2. 使用 SharedPreferences 实现数据的存储和读取

    在开发的过程中我们必须遇到的就是如何对用户的数据进行有效的存储以及读取.我们举个例子,现在我们使用app,当我们登陆一个账号的时候选择记住密码软件就会记住我们的账号以及密码,我们退出当前账号,就可以直 ...

  3. [docker] 管理docker容器中的数据

    之前我们介绍了Docker的基本概念(前面的没翻译...),了解了如何使用Docker镜像进行工作,并且学习了网 络和容器之间的链接.这一节我们将讨论如何管理容器中及容器之间的数据. 我们将查看下面两 ...

  4. 关于EntityFramework在vs2012无法引用的问题

    这段时间学习MVC,发现一个问题,我公司的电脑可以直接引用EntityFrameWork这个命名空间,但我家里面的电脑就不能直接引用,刚开始以为是我电脑配置问题,后重装电脑,发现问题并没有解决. 今天 ...

  5. 一步步学敏捷开发:6、Scrum的3种工件

    Scrum的3种工件包括:Product Blacklog.Sprint Backlog.完成标准. 1.产品待办事项列表(Product Backlog) 产品Blacklog是Scrum中的核心工 ...

  6. System占用端口80

    可尝试如下结束System进程: 开始——设置——控制面板——管理工具——服务结束系统服务项:World Wide Web Publishing Service

  7. Java 读取txt文件,读取结果保存到数据库

    需求:有一个很大的txt文件(1,000,000条数据),从txt中读取有用数据库后保存到Oracle数据库中 利用Java实现: 1.加载文件后一行一行读取 2.数据库连接后按行插入到数据库 pac ...

  8. Java主要有那几种文件类型?各自的作用是什么

    1.源代码.java程序员编译的源代码. 2..class  字节码文件 jvm实现跨平台的中间编译文件. 3.jar包 讲字节码文件打包好,便于查找和使用.

  9. cocos2d-x之Box2d初试

    物理引擎:用来模拟一套物理事件的物理代码. #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "c ...

  10. JavaScript的执行上下文

    在JavaScript的运行过程中,经常会遇到一些"奇怪"的行为,不理解为什么JavaScript会这么工作. 这时候可能就需要了解一下JavaScript执行过程中的相关内容了. ...