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()包起来。

AngularJS 讲解,一 数据绑定的更多相关文章

  1. AngularJS入门之数据绑定

    本篇我们看一下AngularJS中的数据绑定.虽然我们直到这篇才提到数据绑定,但事实上在前面几篇中我们已经非常熟练的运用AngularJS的数据绑定功能了! ngBind(ng-bind)/ {{ e ...

  2. angularJs的一次性数据绑定:双冒号::

    angularJs 中双冒号 ::来实现一次性数据绑定. 原文: https://blog.csdn.net/qianxing111/article/details/79971544 -------- ...

  3. angularjs的双向数据绑定

    数据绑定有两个方向: 数据 → 界面:我们使用scope对象的$watch()方法监听数据的变化,来更新界面. <html> <head> <title>监听数据& ...

  4. angularJs:双向数据绑定

    示例1 <!DOCTYPE html> <html ng-app> <head> <meta charset="UTF-8" /> ...

  5. AngularJS 讲解,四 Directive

    AngularJS  Directive 自定义指令(我最喜欢AngularJs的功能之一) 一:什么时候我们会用到directive 1.使html更具语义化,不用深入了解研究代码的逻辑便可知道大致 ...

  6. AngularJS之双向数据绑定,class绑定

    之前一直都是用vue来完成一些日常开发,初入AngularJS,记录一些日常开发遇到的问题. 1.双向数据绑定 AngularJS与vue的区别在于,vue采用的是虚拟DOM,模板文件上绑定的一大堆指 ...

  7. AngularJS学习之数据绑定

    既然AngularJS是以数据作为驱动的MVC框架,在上一篇文章中,也介绍了AngularJS如何实现MVC模式的,所有模型里面的数据,都必须经过控制器,才能展示到视图中. 什么是数据绑定 首先来回忆 ...

  8. angularjs中的数据绑定

    这是一个最简单的angularjs的例子,关于数据绑定的,大家可以执行一下,看看效果 <html ng-app> <head> <title>angularjs-i ...

  9. AngularJS 作用域与数据绑定机制

    AngularJS 简介 AngularJS 是由 Google 发起的一款开源的前端 MVC 脚本框架,既适合做普通 WEB 应用也可以做 SPA(单页面应用,所有的用户操作都在一个页面中完成).与 ...

随机推荐

  1. Python中给文件加锁

    首先要引入库import fcntl打开一个文件f = open('./test')对该文件加密:fcntl.flock(f, fcntl.LOCK_EX)这样就对文件test加锁了,如果有其他进程要 ...

  2. Linux修改时间的方法

    http://www.blogjava.net/itvincent/archive/2007/08/03/134242.html修改linux的时间可以使用date指令 在命令行输入: date 显示 ...

  3. iOS小知识点记录

    1.创建视图的两种方法:用代码创建视图,创建XIB文件.如何决定使用哪种方法?参考法则:如果视图没有子视图,就用代码创建:如果有子视图,就通过XIB文件创建. 2.创建视图的时候,视图控制器会调用lo ...

  4. phpexcel 读取日期的问题?

    phpexcel 读取excel数字时,显示为一串数字(时间都是类似于这样的数字:41890.620138889),如何将数字转换为对应的日期来显示呢?特别是例如星期一这种的时间. 可以用phpexc ...

  5. linux 安装 登录 centos7

    常用资源下载 r.aminglinux.com centos7.aminglinux.com http://www.apelearn.com/study_v2/ 认识linux Debian Slac ...

  6. List与String的相互转换

    List转字符串,用逗号隔开 List<string> list = new List<string>(); list.Add("a"); list.Add ...

  7. .Net MVC ViewBag

    ViewBag用来做视图的值绑定,我不清楚是不是这么称呼.之前看过安卓的值绑定做法,mvc直接动态类型,瞬间逼格满满 Controller: public class HomeController : ...

  8. ThinkPHP分页实例

    ThinkPHP分页实例 (2014-09-20 15:34:36)   很多人初学thinkphp时,不太熟悉thinkphp的分页使用方法,现在将自己整理的分页方法分享下,有需要的朋友可以看看. ...

  9. Oracle配置客户端

    一.引言 当我们需要连接远程的Oracle数据库服务器时,就需要在自己的机器上安装Oracle客户端了. 二.安装步骤与配置 参考:http://blog.csdn.net/luiseradl/art ...

  10. django中使用POST方法 使用ajax后出现“CSRF token missing or incorrect”

    这个是因为在django的ajax中默认添加了token,因此需要在cookie中增加token头信息. 首先使用JavaScript函数获取token: function getCookie(nam ...