详解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 相关文章推荐
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
Oct 24 Javascript
JQuery中操作Css样式的方法
Feb 12 Javascript
jQuery 重复加载错误以及修复方法
Dec 16 Javascript
AngularJS中$interval的用法详解
Feb 02 Javascript
详解JavaScript for循环中发送AJAX请求问题
Jun 23 Javascript
Javascript农历与公历相互转换的简单实例
Oct 09 Javascript
老生常谈原生JS执行环境与作用域
Nov 22 Javascript
JavaScript手风琴页面制作
May 17 Javascript
在vue项目中引入高德地图及其UI组件的方法
Sep 04 Javascript
通过图带你深入了解vue的响应式原理
Jun 21 Javascript
微信小程序页面滚动到指定位置代码实例
Sep 07 Javascript
vue+vant实现购物车全选和反选功能
Nov 17 Vue.js
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
mysql5写入和读出乱码解决
2006/11/25 PHP
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
php+websocket 实现的聊天室功能详解
2020/05/27 PHP
JQuery中getJSON的使用方法
2010/12/13 Javascript
jQuery网页选项卡插件rTabs用法实例分析
2015/08/26 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
详解Node.js利用node-git-server快速搭建git服务器
2017/09/27 Javascript
微信小程序wx.previewImage预览图片实例详解
2017/12/07 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
解决bootstrap-select 动态加载数据不显示的问题
2018/08/10 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
详解Vue This$Store总结
2018/12/17 Javascript
详解js中的几种常用设计模式
2020/07/16 Javascript
python实现每次处理一个字符的三种方法
2014/10/09 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
python中文分词库jieba使用方法详解
2020/02/11 Python
python随机模块random的22种函数(小结)
2020/05/15 Python
基于Python实现体育彩票选号器功能代码实例
2020/09/16 Python
Pandas替换及部分替换(replace)实现流程详解
2020/10/12 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
2020/11/27 Python
HTML5拖放功能_动力节点Java学院整理
2017/07/13 HTML / CSS
飞利浦美国官网:Philips美国
2020/02/28 全球购物
初级会计求职信范文
2014/02/15 职场文书
二手房购房意向书范本
2014/04/01 职场文书
军人离婚协议书样本
2014/10/21 职场文书
2014年村官工作总结
2014/11/24 职场文书
年终工作总结范文
2019/06/20 职场文书
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android
如何利用golang运用mysql数据库
2022/03/13 Golang