详解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中获取事件对象的方法小结
Mar 13 Javascript
JavaScript类型检测之typeof 和 instanceof 的缺陷与优化
Jan 13 Javascript
JavaScript来实现打开链接页面的简单实例
Jun 02 Javascript
JQuery validate 验证一个单独的表单元素实例
Feb 17 Javascript
JS抛物线动画实例制作
Feb 24 Javascript
node实现分片下载的示例代码
Oct 17 Javascript
vscode下的vue文件格式化问题
Nov 28 Javascript
利用React Router4实现的服务端直出渲染(SSR)
Jan 07 Javascript
详解Element 指令clickoutside源码分析
Feb 15 Javascript
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
Feb 04 jQuery
JavaScript实现密码强度实时验证
Mar 18 Javascript
微信小程序实现倒计时功能
Nov 19 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
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
php利用事务处理转账问题
2015/04/22 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
基于Laravel-admin 后台的自定义页面用法详解
2019/09/30 PHP
用CSS+JS实现的进度条效果效果
2007/06/05 Javascript
ExtJs的Date格式字符代码
2010/12/30 Javascript
event.X和event.clientX的区别分析
2011/10/06 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
JavaScript中用toString()方法返回时间为字符串
2015/06/12 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
2017/05/26 jQuery
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
JavaScript对象原型链原理解析
2020/01/22 Javascript
vue中使用vue-print.js实现多页打印
2020/03/05 Javascript
详解如何使用React Hooks请求数据并渲染
2020/10/18 Javascript
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
通过C++学习Python
2015/01/20 Python
python用reduce和map把字符串转为数字的方法
2016/12/19 Python
spyder常用快捷键(分享)
2017/07/19 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
Python3+Pycharm+PyQt5环境搭建步骤图文详解
2019/05/29 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
Python通过len函数返回对象长度
2020/10/22 Python
python上下文管理器异常问题解决方法
2021/02/07 Python
html5 canvas手势解锁源码分享
2020/01/07 HTML / CSS
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
给物业的表扬信
2014/01/21 职场文书
一位农村小子的自荐信
2014/04/07 职场文书
连锁超市项目计划书
2014/09/15 职场文书
党员个人总结自评
2015/02/14 职场文书
教师师德承诺书2016
2016/03/25 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server