angular $apply和$watch
$apply使用情景
angularjs 外部的控制器(DOM 事件、外部的回调函数如 jQuery UI 空间等)调用了AngularJS 函数之后,必
须调用$apply。在这种情况下,你需要命令 AngularJS 刷新自已(模型、视图等),$apply就是用来做这件事情
的。我们在使用$apply这个方法的时候,只要可以,请把要执行的代码和函数传递给$apply 去执行,而不要自已执
行那些函数然后再调用$apply。
- <!DOCTYPE html>
 - <html>
 - <head>
 - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 - <title>RunJS</title>
 - <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
 - <script src="http://cdn.bootcss.com/angular.js/1.2.9/angular-route.min.js"></script>
 - <script src="serviceJS01.js"></script>
 - </head>
 - <body ng-app="myApp" >
 - <div ng-controller="firstController" ng-click="show()">
 - {{name}}
 - {{age}}
 - </div>
 - </body>
 - </html>
 - <script>
 - var app = angular.module("myApp",[]);
 - app.controller('firstController',function($scope,$timeout){
 - setTimeout(function(){
 - $scope.$apply(function(){
 - $scope.name="李四";
 - })
 - },2000);
 - $scope.name="张三";
 - $scope.age='10';
 - $scope.show=function(){
 - $scope.name='点击后的name';
 - }
 - $timeout(function(){
 - $scope.age='50';
 - },2000);
 - })
 - </script>
 
在上面代码中如果我们不使用$apply来传播name值的改变,而是直接将$scope.name="李四"这句代码写在s
etTimeout函数中,界面上显示的值根本就不会改变。
                    
                
                
            
        
浙公网安备 33010602011771号