详解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 循环读取JSON数据的代码
Jul 17 Javascript
javascript复制对象使用说明
Jun 28 Javascript
JS简单的图片放大缩小的两种方法
Nov 11 Javascript
js实现图片无缝滚动
Dec 23 Javascript
canvas实现流星雨的背景效果
Jan 13 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
Mar 31 Javascript
webpack学习笔记之优化缓存、合并、懒加载
Aug 24 Javascript
Nginx 配置多站点vhost 的方法
Jan 07 Javascript
jsonp跨域获取百度联想词的方法分析
May 13 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
Aug 20 Javascript
node实现简单的增删改查接口实例代码
Aug 22 Javascript
javascript Number 与 Math对象的介绍
Nov 17 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/12/05 PHP
smarty的保留变量问题
2008/10/23 PHP
基于MySQL体系结构的分析
2013/05/02 PHP
php权重计算方法代码分享
2014/01/09 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
PHP PDO数据库操作预处理与注意事项
2019/03/16 PHP
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
JavaScript闭包实例详解
2016/06/03 Javascript
node操作mysql数据库实例详解
2017/03/17 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
2017/06/04 Javascript
js实现复制功能(多种方法集合)
2018/01/06 Javascript
深入剖析Node.js cluster模块
2018/05/23 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
使用npm命令提示: 'npm' 不是内部或外部命令,也不是可运行的程序的处理方法
2020/05/14 Javascript
Python实现字符串格式化的方法小结
2017/02/20 Python
Python利用字典将两个通讯录文本合并为一个文本实例
2018/01/16 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
python获取引用对象的个数方式
2019/12/20 Python
python 实现按对象传值
2019/12/26 Python
python中的itertools的使用详解
2020/01/13 Python
在TensorFlow中屏蔽warning的方式
2020/02/04 Python
python 绘制正态曲线的示例
2020/09/24 Python
浅析两列自适应布局的3种思路
2016/05/03 HTML / CSS
工商学院毕业生个人自我评价
2013/09/19 职场文书
北大研究生linux应用求职信
2013/10/29 职场文书
商场租赁意向书
2014/07/30 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
大学生个人总结范文
2015/02/15 职场文书
浅谈Nginx 中的两种限流方式
2021/03/31 Servers
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis
Nginx+Windows搭建域名访问环境的操作方法
2022/03/17 Servers