zoukankan      html  css  js  c++  java
  • angular $apply和$watch

      $apply使用情景

      angularjs 外部的控制器(DOM 事件、外部的回调函数如 jQuery UI 空间等)调用了AngularJS 函数之后,必

    须调用$apply。在这种情况下,你需要命令 AngularJS 刷新自已(模型、视图等),$apply就是用来做这件事情

    的。我们在使用$apply这个方法的时候,只要可以,请把要执行的代码和函数传递给$apply 去执行,而不要自已执

    行那些函数然后再调用$apply。

    1. <!DOCTYPE html>  
    2. <html>  
    3. <head>  
    4.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
    5.     <title>RunJS</title>  
    6.     <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>  
    7.   
    8.     <script src="http://cdn.bootcss.com/angular.js/1.2.9/angular-route.min.js"></script>  
    9.     <script src="serviceJS01.js"></script>  
    10. </head>  
    11. <body ng-app="myApp" >  
    12. <div ng-controller="firstController" ng-click="show()">  
    13. {{name}}  
    14.     {{age}}  
    15. </div>  
    16.   
    17. </body>  
    18. </html>  
    19.   
    20. <script>  
    21.     var app = angular.module("myApp",[]);  
    22.     app.controller('firstController',function($scope,$timeout){  
    23.         setTimeout(function(){  
    24.             $scope.$apply(function(){  
    25.                 $scope.name="李四";  
    26.             })  
    27.         },2000);  
    28.         $scope.name="张三";  
    29.         $scope.age='10';  
    30.         $scope.show=function(){  
    31.             $scope.name='点击后的name';  
    32.         }  
    33.     $timeout(function(){  
    34.         $scope.age='50';  
    35.     },2000);  
    36.     })  
    37. </script>  

    在上面代码中如果我们不使用$apply来传播name值的改变,而是直接将$scope.name="李四"这句代码写在s

    etTimeout函数中,界面上显示的值根本就不会改变。

  • 相关阅读:
    二叉树的线索
    关于JavaScript变量提升的理解
    HTML label标签的一点理解
    超详细轮播图,让你彻底明白轮播图!
    javascript 入门——this属性的理解!
    《机电传动控制》第二次作业
    第四周学习笔记
    学习笔记
    linux下,让命令提示符显示完整路径
    kafka api消费集群中kafka数据报错问题
  • 原文地址:https://www.cnblogs.com/joesbell/p/7002018.html
Copyright © 2011-2022 走看看