angular的双向数据绑定
方向1:模型数据(model) 绑定 到视图(view)
实现方法1:{{model变量名}}
$scope.num=10
<p>{{num}}</p>
实现方法2: 常用指令(ngRepeat、ngIf、ngShow/Hide/Src....)
$scope.list=[{name:'sam',age:22},{name:'tom',age:37},{name:'kim',age:28}]
<tr ng-repeat='std in list'>
<td>{{std.name}}</td>
<td>{{std.age}}</td>
</tr>
方向2:将视图(view)中用户输入的数据 绑定到 模型数据(model)
实现方法:ngModel指令 用在表单组件中(input select textarea。。。)
PS:$watch监听模型变量值的改变------>执行指定的方法
$scope.$watch('变量名',function(){...});
<!DOCTYPE html>
<html ng-app="myApp">
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script src="js/angular.js"></script>
</head>
<body ng-controller="myCtro"> <!--将多选框的勾选数据给model -->
复选框:<input type="checkbox" ng-model="isAgree"/>
<br> <!--将选择框的model数据给ng-model-->
<!--ng-options 动态生成选项 -->
<select ng-model="sel2" ng-options="sel2.name for sel2 in selection"></select>
<p>{{sel2.name}}</p>
<script>
var app=angular.module('myApp',['ng']); app.controller('myCtro',function($scope){
//$watch可以监听view数据是否改变,便于观察现象
$scope.$watch('isAgree',function(){
console.log($scope.isAgree);
});
$scope.$watch('sel',function(){
console.log($scope.sel);
}); $scope.selection=[
{name:'model',value:5},
{name:'modren',value:4},
{name:'moon',value:1},
{name:'morning',value:3}
];
//为select标签设置一个selected 选项
$scope.sel2=$scope.selection[1]; $scope.$watch('sel2',function() {
console.log($scope.sel2.value);
})
})
</script>
</body>
</html>
3、利用ng-model ng-checked 双向数据传输 实现全选/部分选择的判断
<!DOCTYPE html>
<html ng-app="myApp">
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script src="js/angular.js"></script>
</head>
<body ng-controller="myCtro">
<table>
<thead>
<tr>
<th>请选择</th>
<th>姓名</th>
<th>生日</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="tem in list">
<td>
<input type="checkbox" ng-model="tem.ischecked" ng-checked="selectAll"/>
</td>
<td>{{tem.name}}</td>
<td>{{tem.birthday}}</td>
</tr>
</tbody>
</table>
<input type="checkbox" ng-model="selectAll"/>全选/取消全选
<br/>
<button ng-click="getMsg()">查看</button>
<script>
var app=angular.module('myApp',['ng']); app.controller('myCtro',function($scope){
$scope.list=[
{name:'Michael',birthday:'2016-05-01',ischecked:false},
{name:'Golden',birthday:'2016-05-04',ischecked:false}
]; //监听的目的:通过全选或者取消全选时,ng-checked方向1的绑定确实会生效
//当时不会直接修改
//$watch=onchange
$scope.$watch('selectAll',function(){
angular.forEach($scope.list,function(value,key){
$scope.list[key].ischecked=$scope.selectAll;
})
});
$scope.getMsg=function(){
var str="";
//遍历的一种方法
angular.forEach($scope.list,function(value,key){
console.log(value);
if(value.ischecked){
str+=value.name+"被选中了";
}
});
if(str===""){
str='什么都没选中';
}
alert(str);
} }); </script>
</body>
</html>

angular的双向数据绑定的更多相关文章
- Angular解决双向数据绑定
<!DOCTYPE html> <html ng-app="myApp1"><body><div ng-controller=" ...
- Angular JS - 3 - Angular JS 双向数据绑定
一 .数据绑定 1. 数据绑定: 数据从一个地方A转移(传递)到另一个地方B, 而且这个操作由框架来完成2. 双向数据绑定: 数据可以从View(视图层)流向Model(模型,也就是数据), 也可以从 ...
- angularjs探秘<四> 双向数据绑定
双向数据绑定是angularjs的一大特性,这个特性在实际开发中省了不少事儿.之前第二篇提过数据绑定,这一篇从实际开发的案例中具体看下双向数据绑定的便捷. 首先看一个场景: 在 注册/登录 中经常遇到 ...
- 双向数据绑定(angular,vue)
最近github上插件项目更新了关于双向数据绑定的实现方式,关于angular和vue. angular众所周知是使用的脏检查($dirty).一开始大家会认为angular开启了类似setInter ...
- Angular双向数据绑定MVVM以及基本模式分析
MVVM: angular的MVVM实现的是双向数据绑定,模型从服务器端抓取到数据,将数据通过控制器(controller)传递到视图(view)显示,视图数据发生变化时同样也会影响到模型数据的变化, ...
- Angular自定义组件实现数据双向数据绑定
学过Angular的同学都知道,输入框通过[(ngModel)]实现双向数据绑定,那么自定义组件能不能实现双向数据绑定呢?答案是肯定的. Angular中,我们常常需要通过方括号[]和圆括号()实现组 ...
- angular,vue,react的基本语法—双向数据绑定、条件渲染、列表渲染、angular小案例
基本语法: 1.双向数据绑定 vue 指令:v-model="msg" react constructor(){ this.state{ msg:"双向数据绑定" ...
- angular和vue双向数据绑定
angular和vue双向数据绑定的原理(重点是vue的双向绑定) 我在整理javascript高级程序设计的笔记的时候看到面向对象设计那章,讲到对象属性分为数据属性和访问器属性,我们平时用的js对象 ...
- 第217天:深入理解Angular双向数据绑定的原理
一.理解angular双向数据绑定 双向绑定是新的前端框架中频繁出现的一个新词汇,也是mvvm的核心原理.angularjs五条核心信念中的数据驱动,便是由双向绑定进行完成. 那么什么是双向绑定,下面 ...
随机推荐
- AFNetworking 2.0指北
AFNetworking 2.0 来了 SEP 30TH, 2013 前几天 Mattt 发布了 AFNetworking 2.0,我的一个最大感慨就是,他怎么那么高产? 关于 Mattt Mattt ...
- 4. Decision Tree
一般的,一颗决策树包含一个根结点.若干内部结点和若干叶结点:叶节点对应于决策结果,其他每个结点则对应于一个属性测试:每个结点包含的样本集合根据属性测试的结果被划分到子结点中:根结点包含样本全集.从根结 ...
- 推荐两款免费的优质云服务MongoLab和RedisLabs
http://blog.didispace.com/liang-kuan-mian-fei-de-you-zhi-yun-fu-wu-mongolabhe-redislabs/ 由于最近想给白猫计划资 ...
- 成为一个高效的web开发人员,只需要三步
想成为一名专业的web开发人员并不像你想象的那么容易,开发人员在开发自己的web项目时常常需要牢记很多东西,他们要不断寻找新理念,新创意,在特定时间内开发出高质量的产品,一名优秀的程序员必须明白时间的 ...
- Python开发【第十章】:I/O多路复用、异步I/O(综合篇)
近期心得:国庆节放假再加上近期工作太忙,已经有半个月没更新博客了,程序更别说了,也没怎么去写,自己给自己着实放了个大假.谈谈感受的话,没有python的日子,每天看书.看电影.各种玩,还有爸妈伺候着, ...
- 如何使用Profiler跟踪阻塞信息
Blocked Process ReportProfiler提供一个被阻塞进程报告的事件Errors and Warnings->Blocked Process Report 指示某个任务已被阻 ...
- SqlServer try catch 捕获不到的一些错误及解决方法(转载)
测试注意 :①假如系统能捕获异常 ,并且我们自己开启了事务.系统会自动 回滚事务的,但是 我们还是要在catch里面加上 rollback tran的习惯,这样也不会提示重复rollback的错误,这 ...
- GPS部标平台的架构设计(五)-地图服务算法库
GPS平台,需要和各种地图打交道,需要解决以下的问题: 1.坐标偏移,这个不用多说,需要将原始坐标加偏,然后在百度地图或谷歌上显示出来,需要注意的是百度地图的加偏是偏上再偏,谷歌.高德地图等是火星坐标 ...
- Mount DVD on CentOS
Mount DVD on CentOS need to mount CD/DVD on CentOS Temporarily or Permanently? Here’s the Process Us ...
- iOS 图片轮播图(自动滚动)
iOS 图片轮播图(自动滚动) #import "DDViewController.h" #define DDImageCount 5 @interface DDViewContr ...