AngularJS学习笔记(三)数据双向绑定的简单实例


Posted in Javascript onNovember 08, 2016

双向绑定

双向绑定是AngularJS最实用的功能,它节省了大量的代码,使我们专注于数据和视图,不用浪费大量的代码在Dom监听、数据同步上,关于双向更新,可看下图:AngularJS学习笔记(三)数据双向绑定的简单实例

数据-->视图

这里我们只演示有了数据以后,如何绑定到视图上。

<!DOCTYPE html>

<html ng-app="App">
<head>
  <script type="text/javascript" src="http://sandbox.runjs.cn/uploads/rs/394/xjz9g1bv/angular.js"></script>
  <script type="text/javascript">

  var App = angular.module("App", []);

  App.controller("ctrl", function ($scope) {
      
       $scope.username='张三'
      
        $scope.changename=function(){
          $scope.username='李四';  
        }
    });
    
  </script>
</head>
  <body>
    <div ng-controller ="ctrl">
      <button class='btn btn-primary' ng-click='changename();'>
        username='李四'
      </button>
      <!--页面加载初期,用户可能会看到绑定的表达式-->
      <div>{{username}}</div>
      <!--此绑定不会出现上述情况-->
      <div ng-bind='username'></div>
    </div>
  </body>
</html>

点击按钮之后,div内容变成 李四,效果如图:
AngularJS学习笔记(三)数据双向绑定的简单实例

视图—>数据

上个例子,我们看了数据变化后,视图也会自动变化。那么这个例子则是反过来,视图变化,导致数据也跟着变化,那么数据变化后,我们如何知道呢,这儿我们可以通过另外一个元素将数据再显示出来。

<!DOCTYPE html>

<html ng-app="App">
<head>
  <script type="text/javascript" src="http://sandbox.runjs.cn/uploads/rs/394/xjz9g1bv/angular.js"></script>
  <script type="text/javascript">

  var App = angular.module("App", []);

  App.controller("ctrl", function ($scope) {
      
       $scope.username='张三'
    });
    
  </script>
</head>
  <body>
    <div ng-controller ="ctrl">
      <input type='text' ng-model='username' />
      
      <div>{{username}}</div>
    </div>
  </body>
</html>

查看效果:
AngularJS学习笔记(三)数据双向绑定的简单实例

实现机制

angular对常用的dom事件,xhr事件等做了封装, 在里面触发进入angular的digest流程。

在digest流程里面, 会从rootscope开始遍历, 检查所有的watcher。

Javascript 相关文章推荐
jquery 表单下所有元素的隐藏
Jul 25 Javascript
js indexOf()定义和用法
Oct 21 Javascript
js弹窗返回值详解(window.open方式)
Jan 11 Javascript
jquery使用jxl插件导出excel示例
Apr 14 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
Sep 07 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
Sep 23 Javascript
新手学习前端之js模仿淘宝主页网站
Oct 31 Javascript
基于vue的下拉刷新指令和滚动刷新指令
Dec 23 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
Jan 24 Javascript
BootStrap给table表格的每一行添加一个按钮事件
Sep 07 Javascript
js中DOM事件绑定分析
Mar 18 Javascript
Node批量爬取头条视频并保存方法
Sep 20 Javascript
bootstrapfileinput实现文件自动上传
Nov 08 #Javascript
JS实现探测网站链接的方法【测试可用】
Nov 08 #Javascript
AngularJS+Bootstrap实现多文件上传与管理
Nov 08 #Javascript
AngularJS压缩JS技巧分析
Nov 08 #Javascript
jQuery的Read()方法代替原生JS详解
Nov 08 #Javascript
bootstrap fileinput完整实例分享
Nov 08 #Javascript
AngularJS动态加载模块和依赖的方法分析
Nov 08 #Javascript
You might like
Apache服务器无法使用的解决方法
2013/05/08 PHP
解决php接收shell返回的结果中文乱码问题
2014/01/23 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
php中数字、字符与对象判断函数用法实例
2014/11/26 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
js multiple全选与取消全选实现代码
2012/12/04 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
[01:06:19]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第二场 1月8日
2021/03/11 DOTA
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
python输入中文的实例方法
2020/09/14 Python
python 实现ping测试延迟的两种方法
2020/12/10 Python
python 模拟登录B站的示例代码
2020/12/15 Python
详解Pycharm第三方库的安装及使用方法
2020/12/29 Python
需要知道的CSS3动画技术
2010/01/01 HTML / CSS
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
阿联酋网上花店:Ferns N Petals
2018/02/14 全球购物
理工大学毕业生自荐信
2013/11/01 职场文书
金融管理专业毕业生求职信
2014/03/12 职场文书
五四青年节演讲稿
2014/05/26 职场文书