Angular权威指南学习笔记

第一章.        初识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.

第八章、指令

指令通过关键字directive来定义。

时间: 2024-10-19 12:50:18

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

Git权威指南学习笔记(一)Git初始化

1.在Git中配置用户名和邮件地址 $ git config --global user.name "Jymn_Chen" $ git config --global user.email "[email protected]" 注意把用户名和邮件地址替换成你自己的资料. 在这里的参数global表示配置的作用范围是当前用户,如果将参数改为system,那么配置的作用范围是系统中的所有用户. 2.创建版本库 新建一个目录并cd到目录中,执行以下命令: $ git i

Git权威指南学习笔记(二)Git暂存区

如下图所示: 左侧为工作区,是我们的工作目录. 右侧为版本库,其中: index标记的是暂存区(stage),所处目录为.git/index,记录了文件的状态和变更信息. master标记的是master分支所代表的目录树.HEAD指向master分支. objects标记的是Git的对象库,所处目录为.git/objects,文件索引建立了文件和对象库中对象实体之间的映射关系. 通过该图我们可以清晰地看出add,commit等命令的转化关系.下面通过git diff和git status两条命

JavaScript权威指南学习笔记之一

1.关于分号 javascript里面不强制使用分号来表示一行语句的结束,但是最好能够在写js之前,特别是在原有的js上面新增时,最好前置一个分号.避免这种情况发生:  2.JavaScript类型转换 3.关于=== ①如果类型不同则不等 ②null===null或undefined===undefined ③true===true或false===false ④NaN不等 ⑤0===0 0===-0 ⑥如果是同一个object,array,function则相等 4.关于== ①如果已经==

MongoDB权威指南学习笔记4---查询相关的知识点

1 find find({查询条件},{"key":1,"email":1})  后面表示返回哪些键 2 可用的比较操作符 $lt , $lte,$gt,$gte 比如db.users.find({"age":{"$gte":18,"$lte":30}}) 3不等于 find(...{"key":{"$ne":"value"}} 4 in find

MongoDB权威指南学习笔记5---索引相关的知识点

1 查看查询计划 db.user.find({"username":"xxx"}) .explain() db.doc.find({"es_y":"2014"}).explain() {  "cursor" : "BasicCursor",  "isMultiKey" : false,  "n" : 0,  "nscannedObject

Hadoop权威指南学习笔记一

Hadoop权威指南学习笔记一 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习参考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my_acm 1. 数据的增长远远超过了磁盘的读取速度,传统的数据存储方式和分析方式变得不再适用于大数据的处理. Hadoop分为两大核心技术,HDFS(HadoopDistributed File System-分布式hadoop文件处理系统)和MapReduce(分为Map-数据映射等

sencha touch权威指南---学习笔记5-经纬度获取计算直线距离

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    <meta charset="utf-8" />    <title></title>    <link rel="stylesheet" href="sdk-touch/resources/css/sencha-touch.

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

题外话:HTML是一种结构化语言,而CSS是它的补充:这是一种样式语言.CSS是前端三板斧之一,因此学习CSS很重要.而我还是菜鸟,所以需要加强学习CSS.这个是我学习CSS权威指南的笔记,如有不对,请谅解和指出.谢谢大家.正文: 第一章 CSS和文档---------- 1.CSS,称为层叠样式表.使用CSS的理由有:a.易于使用,样式表能大大减少Web创作人员的工作量:b.在多个页面上使用样式,可以创建一个样式表,然后把这个样式表应用到多个页面:c.层叠,CSS还规定了冲突规则:这些规则统称

Hadoop权威指南学习笔记二

MapReduce简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my_acm 上一篇介绍了什么是Hadoop.Hadoop的作用等.本篇相同基于Hadoop权威指南,结合迪伦的Hadoop的视频教程对MapReduce做一个介绍. 1. MapReduce是Hadoop的核心之中的一个.MapReduce分为两个部分,Mapper和Ruducer模块.简单