详解Angular的双向数据绑定(MV-VM)


Posted in Javascript onDecember 26, 2016

angular的核心MVVM,下面来看看MV(数据到视图)。

<div ng-controller="Aaa">
  <p>{{name}}</p>
</div>
<script type="text/javascript">
  function Aaa($scope){
     $scope.name = 'hello AngularJs';
  setTimeout(function(){



$scope.name = 'Hi';
 
  },2000); 
  };
</script>

执行上面代码,我们使用setTimeout延迟两秒去更新数据(M),我们的视图(V)并没有发生改变。

其实数据确实发生改变,但是我们的视图(V)并没有及时刷新,原因是原生的setTimeout不具备刷新的功能。

angular为我们提供了setTimeout的服务,$timeout,需要在Aaa中引入该服务 !

<div ng-controller="Aaa">
  <p>{{name}}</p>
</div>
<script type="text/javascript">
  function Aaa($scope,$timeout){
    $scope.name = 'hello AngularJs';

$timeout(function(){
   
  $scope.name = 'Hi';
 
 },2000);
  };
<script>

这样就可以刷新视图了,M(数据)到V(视图)的过程。

如果我也想让setTimeout也具有刷新视图的功能怎麽办 ? 可以借助$apply方法!

<div ng-controller="Aaa">
  <p>{{name}}</p>
</div>
<script type="text/javascript">
  function Aaa($scope){
    $scope.name = 'hello AngularJs';
    setTimeout(function(){
      $scope.$apply(function(){
        $scope.name = 'Hi';
      });
    },2000);
  }
<script>

也能实现刷新视图!

在举个例子:

<div id="Aaa" ng-controller="Aaa" ng-click="name='Hi'">
  <p>{{name}}</p>
</div>
<script type="text/javascript">
  function Aaa($scope){
    $scope.name = 'hello AngularJs';
  };
</script>

我们在ID为Aaa的元素绑定了一个点击事件,当发生点击的时候将name值改为Hi,

当然,也可以传递一个函数,来实现更多的功能。

<div id="Aaa" ng-controller="Aaa" ng-click="show()">
  <p>{{name}}</p>
</div>
<script type="text/javascript">
  function Aaa($scope){
    $scope.name = 'hello AngularJs';
    $scope.show = function(){
      $scope.name = 'Hi';
    };
  }
</script>

看到了click,相信你也知道如何使用鼠标移入和移出的这些常用的事件了。

看最后一个例子,V(视图)到M(数据)的过程。

<div ng-controller="Aaa">
  <input type="text" ng-model="name"/>
  <p>{{name}}</p>
</div>
<script type="text/javascript">
  function Aaa($scope){
    $scope.name = 'hello AngularJs';
  };
</script>

我们在input标签上绑定了一个ng-model,这个就是绑定的数据,会默认填充到input的value上,当我们的input值发生改变的时候,对应在$scope中的数据也会发生改变,从而影响到视图中的p标签的值也会发生改变。

详解Angular的双向数据绑定(MV-VM)

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
获取页面高度,窗口高度,滚动条高度等参数值getPageSize,getPageScroll
Sep 22 Javascript
jquery 全局AJAX事件使用代码
Nov 05 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
Feb 26 Javascript
jquery实现类似淘宝星星评分功能实例
Sep 12 Javascript
超级简单实现JavaScript MVC 样式框架
Mar 24 Javascript
被遗忘的javascript的slice() 方法
Apr 20 Javascript
原生js实现返回顶部缓冲效果
Jan 18 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
Apr 17 jQuery
微信小程序中页面FOR循环和嵌套循环
Jun 21 Javascript
bootstrap-table实现服务器分页的示例 (spring 后台)
Sep 01 Javascript
浅谈Angular路由复用策略
Oct 04 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
May 09 Javascript
Angular工具方法学习
Dec 26 #Javascript
angular双向绑定模拟探索
Dec 26 #Javascript
jquery Banner轮播选项卡
Dec 26 #Javascript
Javascript中常用类型的格式化方法小结
Dec 26 #Javascript
Angular的自定义指令以及实例
Dec 26 #Javascript
如何提高javascript加载速度
Dec 26 #Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
Dec 26 #Javascript
You might like
PHP 高手之路(一)
2006/10/09 PHP
php获取url参数方法总结
2014/11/13 PHP
php判断并删除空目录及空子目录的方法
2015/02/11 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
总结PHP中DateTime的常用方法
2016/08/11 PHP
用javascript实现页面打印的三种方法
2007/03/05 Javascript
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
JS 实现导航栏悬停效果(续2)
2013/09/24 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
2014/09/26 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
微信小程序开发入门基础教程
2017/04/19 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
JavaScript 中的 this 工作原理
2018/06/20 Javascript
[57:59]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第一场 11.05
2020/11/05 DOTA
解析Python编程中的包结构
2015/10/25 Python
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
python实现感知器
2017/12/19 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
keras小技巧——获取某一个网络层的输出方式
2020/05/23 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
纯CSS绘制漂亮的圆形图案效果
2014/05/07 HTML / CSS
美国最大点评网站:Yelp
2018/02/14 全球购物
担保书格式及范文
2014/04/01 职场文书
优秀毕业生求职信
2014/06/05 职场文书
单位委托书格式范本
2014/09/29 职场文书
会计岗位职责
2015/02/03 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
Flutter集成高德地图并添加自定义Maker的实践
2022/04/07 Java/Android
SpringBoot集成MongoDB实现文件上传的步骤
2022/04/18 MongoDB