详解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 相关文章推荐
[原创]站长必须要知道的javascript广告代码
May 30 Javascript
克隆javascript对象的三个方法小结
Jan 12 Javascript
jQuery源码分析-01总体架构分析
Nov 14 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
Dec 27 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
Jan 24 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
Nov 21 Javascript
Node.js安装教程和NPM包管理器使用详解
Aug 16 Javascript
原生javascript实现解析XML文档与字符串
Mar 01 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
Jul 14 Javascript
js微信分享API
Oct 11 Javascript
vue 巧用过渡效果(小结)
Sep 22 Javascript
微信小程序的tab选项卡的实现效果
May 15 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
解析csv数据导入mysql的方法
2013/07/01 PHP
PHPAnalysis中文分词类详解
2014/06/13 PHP
Codeigniter实现发送带附件的邮件
2015/03/19 PHP
thinkphp实现图片上传功能
2016/01/13 PHP
php微信开发自定义菜单
2016/08/27 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
用javascript实现的仿Flash广告图片轮换效果
2007/04/24 Javascript
js调用flash的效果代码
2008/04/26 Javascript
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
2010/11/20 Javascript
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
opencv 识别微信登录验证滑动块位置
2018/08/07 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
countup.js实现数字动态叠加效果
2019/10/17 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
2019/12/18 Javascript
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
python实现提取百度搜索结果的方法
2015/05/19 Python
python开发之文件操作用法实例
2015/11/13 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
24式加速你的Python(小结)
2019/06/13 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
Python使用Chrome插件实现爬虫过程图解
2020/06/09 Python
pycharm 添加解释器的方法步骤
2020/08/31 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
企业元宵节主持词
2014/03/25 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
民事诉讼代理委托书
2014/10/08 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
Qt数据库应用之实现图片转pdf
2022/06/01 Java/Android
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers