AngularJS 完全使用javascript 编写的客户端技术。通过原生的Model-View-Controller(MVC,模型视图控制器)功能增强了HTML。这个选择可以快捷和愉悦地构建出令人印象深刻并且极富表现力的客户端应用。

AngularJS的源码托管在GitHub上,可以免费获取。

数据模型对象(model object)是指$scope对象。

数据绑定:

例子:时钟的实现

 <!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta charset="utf-8" />
<title>tabs control</title>
<script type="text/javascript" src="angular.min.js"></script>
</head>
<body>
<div ng-controller="MyController">
<h1>clock:{{clock}}</h1>
</div>
<script type="text/javascript" src="clock.js"></script>
</body>
</html>

clock.js

 (function () {
var app = angular.module("myApp", []);
app.controller('MyController', function ($scope, $timeout) {
var updateClock = function () {
$scope.clock = new Date();
$timeout(function () {
updateClock();
}, )
}
updateClock();
})
})();

数据绑定的最佳实践:

由于JavaScript自身的特点,以及它在传递值和引用时的不同处理方式,通常认为,在视图中
通过对象的属性而非对象本身来进行引用绑定,是Angular中的最佳实践。

修改为:

 <!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta charset="utf-8" />
<title>tabs control</title>
<script type="text/javascript" src="angular.min.js"></script>
</head>
<body>
<div ng-controller="MyController">
<h1>clock:{{clock.now}}</h1>
</div>
<script type="text/javascript" src="clock.js"></script>
</body>
</html>

clock.js

 (function () {
var app = angular.module("myApp", []);
app.controller('MyController', function ($scope) {
$scope.clock = {
now: new Date()
}
var updateClock = function () {
$scope.clock.now = new Date();
}
setInterval(function () {
$scope.$apply(updateClock);
}, );
updateClock();
})
})();

这里提到$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()包起来。

最新文章

  1. 创建Unity3D的MacOS Plugin的正确姿势
  2. windows8.1 安装Redis
  3. 篇一:MySQL中case when then
  4. ViewHolder模式超简洁写法
  5. jmeter 远程测试
  6. ExtJs学习笔记之Button组件
  7. Entity Framework菜鸟初飞
  8. sqlite 下载的 ZIP 包的区别
  9. VIM 技巧 (一)全文统一添加
  10. $^,$@,$?,$&lt;,$(@D),$(@F) of makefile
  11. datareader几种用法总结
  12. POJ-1002 解题报告
  13. JCo 指南
  14. 单链表之C++实现
  15. 【Python之路】第四篇--Python基础之函数
  16. Cocos2D-ObjC:在RPG游戏中混合Swift代码
  17. session.go
  18. SpringBoot打包项目成war包,并部署到服务器的tomcat上
  19. 架构 规则引擎 quartz
  20. zabbix 服务端安装(server)

热门文章

  1. java的学习之路01
  2. Ooui:在浏览器中运行.NET应用 Ooui.Wasm:浏览器中的.NET
  3. javascript和html中unicode编码和字符转义的详解
  4. linux按内容查找文件
  5. 跨Server查询
  6. 【JavaScript】一个同步于本地时间的动态时间
  7. vsftp 虚拟用户高级设置(转载)
  8. 关于Tensorflow 的数据读取环节
  9. 如何输出long double?
  10. javascript深入理解js闭包【手动加精】