angularJS的$watch和$apply
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body ng-app="fng"> <div ng-controller="fc1"> <div ng-bind="timeNow"></div> <div ng-bind="timeNow2"></div> <hr> <div ng-bind="test.count"></div> <div ng-bind="test.name"></div> <input type="button" value="增加" ng-click="add()"/> </div> </body> <script src="angular.js"></script> <script> var ngApp=angular.module("fng",[]); ngApp.controller("fc1",[‘$scope‘,‘$http‘,function($scope){ $scope.timeNow=new Date(); setInterval(function(){ //从一个宏观的角度来看$scope.$apply要比$scope.$watch的范围大得多 /* * $scope.$apply方法内部给出要更新的$scope局部成员, * 这样才能触发ng的局部更新监听 * (如果使用$digest的话那么整个$scope中的成员变化都会被监听,效率大大降低) * */ $scope.$apply(function() { if (true) { $scope.timeNow = new Date(); $scope.timeNow2 = new Date(); } }); }); //===================================================== $scope.test={ count:0, name:"小于10" }; $scope.add=function(){ $scope.test.count+=1; }; //这是针对于你想跟踪一个你自己的成员而设计 /* * $scope.$watch提供三个参数(对象成员/其他成员, 回调函数, (可选)*对象成员的属性*是否有变化) * 第三个参数如果不填,只有该对象变为数组或者其它类型才能触发回调函数 * */ $scope.$watch(‘test‘,function(){ if($scope.test.count>10){ $scope.test.name="大于10啦!"; } },true); }]); </script> </html>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。