详解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 相关文章推荐
不错的一个日期输入 动态
Nov 06 Javascript
30个最好的jQuery 灯箱插件分享
Apr 25 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
Jun 22 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
Jun 23 Javascript
JavaScript的作用域和块级作用域概念理解
Sep 21 Javascript
使用jQuery操作DOM的方法小结
Feb 27 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
Sep 18 Javascript
VeeValidate在vue项目里表单校验应用案例
May 09 Javascript
js中console在一行内打印字符串和对象的方法
Sep 10 Javascript
如何基于JS截获动态代码
Dec 25 Javascript
JavaScript观察者模式原理与用法实例详解
Mar 10 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
Oct 02 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代码审核的详细介绍
2013/06/13 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
2014/08/19 PHP
php实现简单爬虫的开发
2016/03/28 PHP
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
解决Jquery load()加载GB2312页面时出现乱码的两种方案
2013/09/10 Javascript
JavaScript AJAX之惰性载入函数
2014/08/27 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
2014/10/30 Javascript
常见JS验证脚本汇总
2015/12/01 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
jQuery点击头像上传并预览图片
2017/02/23 Javascript
jquery.masonry瀑布流效果
2017/05/25 jQuery
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
vue router使用query和params传参的使用和区别
2017/11/13 Javascript
Vue.js 实现微信公众号菜单编辑器功能(一)
2018/05/08 Javascript
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
[00:37]2016完美“圣”典风云人物:AMS宣传片
2016/12/06 DOTA
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
2019/09/24 Python
Python字典深浅拷贝与循环方式方法详解
2020/02/09 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
2020/08/17 Python
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
英国网上电器商店:Electricshop
2020/03/15 全球购物
施华洛世奇中国官网:SWAROVSKI中国
2020/06/16 全球购物
C#笔试题
2015/07/14 面试题
大学生的网上创业计划书
2013/12/31 职场文书
电教室标语
2014/06/20 职场文书
保险专业求职信
2014/07/07 职场文书
法定授权委托证明书
2014/09/27 职场文书
个人党性分析材料
2014/12/19 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
2015年反腐倡廉工作总结
2015/05/14 职场文书
初中语文教学随笔
2015/08/15 职场文书
Python中else的三种使用场景
2021/06/16 Python
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript