AngularJS笔记---数据绑定
一.数据绑定
1.简单绑定
下面实现了一个简单的加法运算的绑定,
A.ng-app:表示该div以内都在AngularJS的应用, 去掉ng-app="" 那么后面的绑定都将无效
B.ng-models : 用于数据绑定, 也就是两个input的里面输入的信息都会绑定到val1和val2变量里面。
C.{{ FiledName }}: 双括号也是用于数据的绑定.
<!DOCTYPE html>
<html>
<script src="angular.min.js"></script>
<script type="text/javascript">
</script>
<head>
<div ng-app="">
<div >
<input ng-model="val1" type="number" placeholder="input your number"> +
<input ng-model="val2" type="number" placeholder="input your numer"> =
<span>{{ val1+val2 || }}</span>
</div>
</div>
</head>
<body> </body>
</html>
2. $scope的使用
上面有提到通过ng-model实现数据的绑定,其实所谓的数据绑定其实就是绑定到了$scope上.下面通过编写SumController方法实现了一个点击submit按钮就计算出两个整数之和.
<!DOCTYPE html>
<html>
<script src="angular.min.js"></script>
<script type="text/javascript"> function SumController($scope){
$scope.addTwoNumber = function(){
$scope.addNumber = $scope.val2+$scope.val1;
};
} </script>
<head>
<div ng-app="">
<div ng-controller="SumController" >
<input ng-model="val1" type="number" placeholder="input your number"> +
<input ng-model="val2" type="number" placeholder="input your numer">
<button ng-click="addTwoNumber()">Submit</button>
<span>{{ addNumber|| }}</span>
</div>
</div>
</head>
<body>
</body>
</html>
3.$apply()用法
上面有提到通过ng-model实现数据的绑定,其实所谓的数据绑定其实就是绑定到了$scope上.下面是一个简单的时钟程序,通过setInterval方法实现每过一秒更新clock值,在绑定中我们还是用到了apply方法.
A. setInterval 中调用updateClock()后会发现chrome的console中会每过一秒打印当前时间,可是界面没更新
B. setInterval 中调用$scope.$apply(updateClock)后会发现chrome的console会每过1秒答应一次当前时间,并且界面更新时间
C.为何为这样?其实是调用setInterval方法循环触发updateClock方法与我们上面的通过ng-click的机制不同. ng-click会自动$watch,监控数据变化从而更新界面。而原生JavaScript的setInterval中更改了数据无法监控到,所以要通过$apply来实现。
理解Angular中的$apply()以及$digest()
<!DOCTYPE html>
<html>
<script src="angular.min.js"></script>
<script type="text/javascript"> function ClockController($scope){ var updateClock = function(){
$scope.clock = new Date();
console.log($scope.clock); //数据观察
} var clockInterval = setInterval(function(){ // updateClock(); -- 不会更新
$scope.$apply(updateClock);
},); updateClock();
} </script>
<head>
<div ng-app="">
<div ng-controller="ClockController" >
<h1>{{ clock }}</h1>
</div>
</div>
</head>
<body>
</body>
</html>
二. 模块化
做过.net开发的都知道,在开发中我们会声明不同的命名空间和不同类,来实现代码的模块化管理,其实AngularJs同样也提供了类似的方法,我们可以通过ng-app和ng-contrller实现代码的模块化管理.
A.通过angular.module在后台注册一个模块,然后通过app.controller来添加contrller,这里的'SumController'和'TimeController'属于兄弟模块,两则之间的Scope绑定对象互不干扰.
B.一个html页面后台只能注册一个module,如果注册多个会报错.
<!DOCTYPE html>
<html>
<script src="angular.min.js"></script>
<script type="text/javascript">
var app = angular.module('app',[]);
app.controller('SumController',function($scope){
$scope.addTwoNumber = function(){
$scope.addNumber = $scope.val2+$scope.val1;
};
}); app.controller('TimeController',function($scope){
$scope.timeTwoNumber = function(){
$scope.timeNumber = $scope.val2 * $scope.val1;
};
}); </script>
<head>
<div ng-app="app">
<div ng-controller="SumController" >
<input ng-model="val1" type="number" placeholder="input your number"> +
<input ng-model="val2" type="number" placeholder="input your numer">
<button ng-click="addTwoNumber()">Submit</button>
<span>{{ addNumber|| }}</span>
</div>
<br/>
<div ng-controller="TimeController">
<input ng-model="val1" type="number" placeholder="input your number"> *
<input ng-model="val2" type="number" placeholder="input your numer">
<button ng-click="timeTwoNumber()">Submit</button>
<span>{{ timeNumber|| }}</span>
</div>
</div>
</head>
<body>
</body>
</html>
AngularJS笔记---数据绑定的更多相关文章
- 学习笔记 - 数据绑定之knockout
参考: http://www.cnblogs.com/TomXu/archive/2011/11/21/2257154.html http://knockoutjs.com/documentation ...
- 10分钟学会AngularJS的数据绑定
前言:为什么要用AngularJS? 相信用过.NetMVC的人都知道用rezor绑定数据是一件很爽的事情,C#代码直接在前台页面中输出.然后这种比较适用于同步请求. 当我们的项目离不开异步请 ...
- AngularJS双向数据绑定
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- AngularJs学习笔记-数据绑定、管道
数据绑定.管道 (1)数据绑定(Angular中默认是单向绑定) 1.[]方括号 可以用于子组件传值 由于是单向绑定,所以当子组件中的iStars属性发生改变时,不会影响到父组件中product.ra ...
- AngularJs 笔记
初识 directive 指令 ng-app 初始化一个AngularJs应用程序(通过一个值(比如 ng-app="myModule")连接到代码模块.) ng-init 初始化 ...
- AngularJS笔记--自定义指令
在前端开发中, 我们会遇到很多地方都会用到同一种类型的控件.AngularJS提供了自定义指令功能,我们可以在指令里面定义特定的html模板.提供给前台html调用. 一. 指令的简单定义. 下面定 ...
- AngularJS笔记---注册服务
在前面的笔记中,了解到AngularJS的后台控制可以在Controller里面实现. 可是如果所有的逻辑代码都写到Controller会显得该Controller过于臃肿. 不方便维护, Angul ...
- 02、AngularJs的数据绑定
我们知道,AngularJs中的数据绑定是双向绑定的,View的改变,会改变Model,Model的改变也会改变View中的值,废话不多说,我们直接上代码. <!DOCTYPE html> ...
- AngularJS 的数据绑定
单向绑定(ng-bind) 和 双向绑定(ng-model) 的区别 ng-bind 单向数据绑定($scope -> view),用于数据显示,简写形式是 {{}}. 1 <span n ...
随机推荐
- ubuntu安装VNC、Xfce桌面
1.首先安装xfce桌面环境 sudo apt-get -y install xfce4 2.安装vncserver sudo apt-get -y install vnc4server 3.设置访问 ...
- Nodejs与ES6系列4:ES6中的类
ES6中的类 4.1.class基本语法 在之前的javascript语法中是不存在class这样的概念,如果要通过构造函数生成一个新对象代码 function Shape(width,height) ...
- 【HTML5】<datalist>标签和<select>标签的比较
<select>标签: 注:该标签定义了下拉列表的实现 <select name = "location"> <option value = &quo ...
- 实例之JavaScript
使用JavaScript实现5秒倒计时 <html> <head> <meta charset="utf-8"> <title>&l ...
- Android使用Fragment来实现ViewPager的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
以下内容为原创,转载请注明:http://www.cnblogs.com/tiantianbyconan/p/3364728.html 我前两天写过一篇博客<Android使用Fragment来 ...
- react native 学习资料整理
入门教程 深入浅出 React Native:使用 JavaScript 构建原生应用 http://www.appcoda.com/react-native-introduction/ 中文版 h ...
- 转 用C API 操作MySQL数据库
用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,“C API函数描述”. 函数 描述 mysql_a ...
- Android的系统属性SystemProperties
创建与修改android属性用Systemproperties.set(name, value) 获取android属性用Systemproperties.get(name) 注意:android属性 ...
- UITextView: 响应键盘的 return 事件(收回键盘)
UITextView: 响应键盘的 return 事件(收回键盘) 此篇文章将要介绍UITextView: 响应键盘的 return 事件(收回键盘)的相关介绍,具体实例请看下文 UITextView ...
- OC点语法和变量作用域
OC点语法和变量作用域 一.点语法 (一)认识点语法 声明一个Person类: #import <Foundation/Foundation.h> @interface Person : ...