详解Angular的双向数据绑定(MV-VM)

发布时间 - 2026-01-10 22:07:34    点击率:

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  # 数据绑定  # Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)  # AngularJS入门教程之数据绑定原理详解  # AngularJS入门教程之数据绑定用法示例  # AngularJS 双向数据绑定详解简单实例  # AngularJS实践之使用NgModelController进行数据绑定  # 详解JavaScript的AngularJS框架中的作用域与数据绑定  # angularjs学习笔记之双向数据绑定  # 也会  # 定了  # 我也  # 鼠标  # 也能  # 来看看  # 当我们  # 应在  # 影响到  # 想让  # 来实现  # 不具备  # 绑定  # 如何使用  # 你也知道  # 就可以  # 举个例子  # 看到了  # 移出  # 一个函数 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 使用PHP下载CSS文件中的所有图片【几行代码即可实现】  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  iOS验证手机号的正则表达式  EditPlus中的正则表达式 实战(2)  如何彻底卸载建站之星软件?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  如何在 Pandas 中基于一列条件计算另一列的分组均值  Laravel如何为API编写文档_Laravel API文档生成与维护方法  iOS UIView常见属性方法小结  教学论文网站制作软件有哪些,写论文用什么软件 ?  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  Laravel如何配置和使用缓存?(Redis代码示例)  如何挑选优质建站一级代理提升网站排名?  如何在IIS中配置站点IP、端口及主机头?  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  如何用西部建站助手快速创建专业网站?  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  Laravel如何保护应用免受CSRF攻击?(原理和示例)  深圳网站制作平台,深圳市做网站好的公司有哪些?  北京企业网站设计制作公司,北京铁路集团官方网站?  Laravel如何使用Blade组件和插槽?(Component代码示例)  Laravel如何自定义错误页面(404, 500)?(代码示例)  在线制作视频网站免费,都有哪些好的动漫网站?  JS中对数组元素进行增删改移的方法总结  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  零基础网站服务器架设实战:轻量应用与域名解析配置指南  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  nodejs redis 发布订阅机制封装实现方法及实例代码  Laravel Docker环境搭建教程_Laravel Sail使用指南  如何在橙子建站中快速调整背景颜色?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  Laravel怎么使用Intervention Image库处理图片上传和缩放  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  文字头像制作网站推荐软件,醒图能自动配文字吗?  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  网站图片在线制作软件,怎么在图片上做链接?  ,怎么在广州志愿者网站注册?  简单实现Android文件上传  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  Laravel如何实现API资源集合?(Resource Collection教程)  JavaScript如何操作视频_媒体API怎么控制播放  JavaScript常见的五种数组去重的方式  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践