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(){...});

 1 <!DOCTYPE html>
 2 <html ng-app="myApp">
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title></title>
 6     <script src="js/angular.js"></script>
 7 </head>
 8 <body ng-controller="myCtro">
 9
10 <!--将多选框的勾选数据给model -->
11 复选框:<input type="checkbox" ng-model="isAgree"/>
12 <br>
13
14 <!--将选择框的model数据给ng-model-->
15 <!--ng-options 动态生成选项  -->
16 <select ng-model="sel2" ng-options="sel2.name for sel2 in selection"></select>
17 <p>{{sel2.name}}</p>
18 <script>
19     var app=angular.module(‘myApp‘,[‘ng‘]);
20
21     app.controller(‘myCtro‘,function($scope){
22         //$watch可以监听view数据是否改变,便于观察现象
23         $scope.$watch(‘isAgree‘,function(){
24             console.log($scope.isAgree);
25         });
26         $scope.$watch(‘sel‘,function(){
27             console.log($scope.sel);
28         });
29
30         $scope.selection=[
31             {name:‘model‘,value:5},
32             {name:‘modren‘,value:4},
33             {name:‘moon‘,value:1},
34             {name:‘morning‘,value:3}
35         ];
36         //为select标签设置一个selected    选项
37         $scope.sel2=$scope.selection[1];
38
39         $scope.$watch(‘sel2‘,function() {
40             console.log($scope.sel2.value);
41         })
42     })
43 </script>
44 </body>
45 </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>    

 

时间: 2024-11-03 14:50:38

angular的双向数据绑定的相关文章

Angular之双向数据绑定

---恢复内容开始--- angular最初进入前端开发人员视野的时候,给人以不可磨灭的印象之一就是它的双向数据绑定的实现.本篇章会先介绍如何使用此功能,然后在深入解释它的双向绑定的机制是如何实现的. angular中的data-binding指的是模型models和视图views之间的自动同步.angular实现双向绑定后,会让你觉得数据模型是页面中数据唯一的真实来源.当model改变后,视图反映改变,反之亦然.通俗的说,所谓的双向数据绑定,无非就是从界面的操作能实时反映到数据,数据的变更能实

Angular之双向数据绑定(下)

本篇详细介绍:1.angular时如何通过脏检查来实现对$scope对象上变量的双向绑定的.2.实现angular双向绑定的三个重要方法:$digest(),$apply(),$watch(). angular不像Ember.js,通过动态设置setter函数和getter函数来实现双向绑定,脏检查允许angular监听可能存在可能不存在的变量. $scope.$watch语法糖:$scope.$watch(watchExp,Listener,objectEquality); 监听一个变量何时变

Angular JS - 3 - Angular JS 双向数据绑定

一 .数据绑定 1. 数据绑定: 数据从一个地方A转移(传递)到另一个地方B, 而且这个操作由框架来完成2. 双向数据绑定: 数据可以从View(视图层)流向Model(模型,也就是数据), 也可以从Model流向View 视图(View): 也就是我们的页面(主要是Andular指令和表达式) 模型(Model) : 作用域对象(当前为$rootScope), 它可以包含一些属性或方法 当改变View中的数据, Model对象的对应属性也会随之改变: ng-model指令 数据从View==>

angular.js双向数据绑定实现动画特效

一.HTML 1.引入必要的js文件,这个不多说了(注意由于之后要使用angular提供的动画效果和路由效果,所以要引入angular-animate.js和angular-route.js两个文件) 2.body内加入以下代码:  <div class="page {{pageClass}}" ng-view></div> ng-view不多说,class通过双向绑定的方式,通过controller动态控制class中的{{pageclass}} 另外不要忘了

angular和vue双向数据绑定

angular和vue双向数据绑定的原理(重点是vue的双向绑定) 我在整理javascript高级程序设计的笔记的时候看到面向对象设计那章,讲到对象属性分为数据属性和访问器属性,我们平时用的js对象90%以上都只是用到数据属性;我们向来讲解下数据属性和访问器属性到底是什么? 数据属性:数据属性包含一个数据值的位置,在这个位置可以读取和写入值. 访问器属性:访问器属性不包含数据值;他们包含一对getter和setter函数在读取访问器属性时,会调用getter函数,这个函数负责返回有效的值,在写

vue和angular双向数据绑定原理

都是视图和数据的双向传递: angular双向数据绑定原理: 就是通过脏值检测的方式判断数据是否有变更: 当数据中的值改变的化,就会到$degiest(是vue内部的方法)中循环查找,当值不改变了,就会把数据显示到视图中: vue双向数据绑定原理: 数据劫持,使用ES5的Object.definpropoty() 方法监控的数据,数据的读取使用的是setter和getter,用于视图和数据的同步绑定:

Angular 1.63 双向数据绑定 通过 $http 发送数据

html 部分 <body ng-app="app"> <form action="" method="">账号 <div ng-controller="login"> <label for=""><input type="text" ng-model="data.name" name="name&quo

Angular数据双向绑定

Angular数据双向绑定 AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中.AngularJS有着诸多特性,最为核心的是:MVVM.模块化.自动化双向数据绑定.语义化标签.依赖注入等等. 一.什么是数据双向绑定 Angular实现了双向绑定机制.所谓的双向绑定,无非是从界面的操作能实时反映到数据,数据的变更能实时展现到界面. 一个最简单的示例就是这样: <div ng-control

双向数据绑定和单项数据绑定的认识

参考文章: https://segmentfault.com/q/1010000002511449/a-1020000002514653 https://www.zhihu.com/question/49964363/answer/136022879 单向数据绑定:指的是我们先把模板写好,然后把模板和数据(数据可能来自后台)整合到一起形成HTML代码,然后把这段HTML代码插入到文档流里面. 单向数据绑定缺点:HTML代码一旦生成完以后,就没有办法再变了,如果有新的数据来了,那就必须把之前的HT