详解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 相关文章推荐
禁止刷新,回退的JS
Nov 25 Javascript
用jquery中插件dialog实现弹框效果实例代码
Nov 15 Javascript
Javascript基础教程之数据类型转换
Jan 18 Javascript
js动态修改表格行colspan列跨度的方法
Mar 30 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
Jun 19 Javascript
JS+CSS实现美化的下拉列表框效果
Aug 11 Javascript
js实现表单多按钮提交action的处理方法
Oct 24 Javascript
点评js异步加载的4种方式
Dec 22 Javascript
jQuery实现的文字hover颜色渐变效果实例
Feb 20 Javascript
AngularJS实现select的ng-options功能示例
Jul 12 Javascript
原来JS还可以这样拆箱转换详解
Feb 01 Javascript
vue中axios防止多次触发终止多次请求的示例代码(防抖)
Feb 16 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 表单验证实现代码
2009/03/10 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
yii2学习教程之5种内置行为类详解
2017/08/03 PHP
JS创建优美的页面滑动块效果 - Glider.js
2007/09/27 Javascript
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
JQuery切换显示的效果实例代码
2013/02/27 Javascript
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
2013/06/21 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
2014/05/10 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
js实现带圆角的两级导航菜单效果代码
2015/08/24 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
AngularJS使用ng-repeat指令实现下拉框
2016/08/23 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
Vue.js创建Calendar日历效果
2016/11/03 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
Paypal支付不完全指北
2020/06/04 Javascript
vue中v-model对select的绑定操作
2020/08/31 Javascript
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
[41:17]VG vs Optic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
全面了解Python环境配置及项目建立
2016/06/30 Python
Python time库基本使用方法分析
2019/12/13 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
python tqdm库的使用
2020/11/30 Python
印尼穆斯林时尚购物网站:Hijabenka
2016/12/10 全球购物
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
Java Servlet的主要功能和作用是什么
2014/02/14 面试题
外贸业务员求职信
2014/06/16 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
指导教师推荐意见
2015/06/05 职场文书
js中Object.create实例用法详解
2021/10/05 Javascript