AngularJS 彻底使用javascript 编写的客户端技术。经过原生的Model-View-Controller(MVC,模型视图控制器)功能加强了HTML。这个选择能够快捷和愉悦地构建出使人印象深入而且极富表现力的客户端应用。javascript
AngularJS的源码托管在GitHub上,能够免费获取。html
数据模型对象(model object)是指$scope对象。java
数据绑定:app
例子:时钟的实现函数
1 <!DOCTYPE html> 2 <html ng-app="myApp"> 3 <head> 4 <meta charset="utf-8" /> 5 <title>tabs control</title> 6 <script type="text/javascript" src="angular.min.js"></script> 7 </head> 8 <body> 9 <div ng-controller="MyController"> 10 <h1>clock:{{clock}}</h1> 11 </div> 12 <script type="text/javascript" src="clock.js"></script> 13 </body> 14 </html>
clock.jsatom
1 (function () { 2 var app = angular.module("myApp", []); 3 app.controller('MyController', function ($scope, $timeout) { 4 var updateClock = function () { 5 $scope.clock = new Date(); 6 $timeout(function () { 7 updateClock(); 8 }, 1000) 9 } 10 updateClock(); 11 }) 12 })();
数据绑定的最佳实践:spa
因为JavaScript自身的特色,以及它在传递值和引用时的不一样处理方式,一般认为,在视图中
经过对象的属性而非对象自己来进行引用绑定,是Angular中的最佳实践。code
修改成:xml
1 <!DOCTYPE html> 2 <html ng-app="myApp"> 3 <head> 4 <meta charset="utf-8" /> 5 <title>tabs control</title> 6 <script type="text/javascript" src="angular.min.js"></script> 7 </head> 8 <body> 9 <div ng-controller="MyController"> 10 <h1>clock:{{clock.now}}</h1> 11 </div> 12 <script type="text/javascript" src="clock.js"></script> 13 </body> 14 </html>
clock.jshtm
1 (function () { 2 var app = angular.module("myApp", []); 3 app.controller('MyController', function ($scope) { 4 $scope.clock = { 5 now: new Date() 6 } 7 var updateClock = function () { 8 $scope.clock.now = new Date(); 9 } 10 setInterval(function () { 11 $scope.$apply(updateClock); 12 }, 1000); 13 updateClock(); 14 }) 15 })();
这里提到$scope.$apply(),相信你们不知道这个,怎么用和为何这么用,我刚接触的时候也不明白为何,而后去查了一下资料,下面大概讲解一个这个$scope.$apply()的用法
1.$scope提供$apply方法传播Model的变化
对于检查绑定的数据到底有没有发生变化,其实是由$scope.$digest()完成的,可是咱们几乎历来就没有直接调用过这个方法,而是调用$scope.$apply()方法,由于在$scope.$apply()方法里面,它会去调用$scope.$digest()方法。$scope.$apply()方法带一个函数或者一个表达式,而后执行它,最后调用$scope.$digest()方法去更新bindings或者watchers。
2.咱们何时用$apply()
其实咱们全部的代码都包在$scope.$apply()里面,像ng−click,controller的初始化,http的回调函数等。在这些状况下,咱们不须要本身调用,实际上咱们也不能本身调用,不然在apply()方法里面再调用apply()方法会抛出错误。若是咱们须要在一个新的执行序列中运行代码时才真正须要用到它,并且当且仅当这个新的执行序列不是被angular JS的库的方法建立的,这个时候咱们须要将代码用$scope.$apply()包起来。