在Angular当中我们要想视图跟着数据改变通常有两种方式,
①、通过服务,例如$timeout
1 2 3 4 5 6 | function App($scope,$timeout){ $scope.name = "hello"; //初始化 $timeout(function(){ $scope.name = "hi"; //通过定时器服务2秒后变成hi },2000); } |
②、通过ng-click点击去改变
③、$apply就是第三种,可以让原生js/第三方库操作数据后达到视图跟着改变
1 2 3 4 5 6 7 8 | function App($scope){ $scope.name = "hello"; //初始化 setTinmeout(function(){ //通过原生js定时器 $scope.$apply(function(){ $scope.name = "hi"; //通过$apply方法2秒后变成hi }); },2000); } |
在同一个页面可以有多个模块和控制器,但是直接通过在标签上ng-app时候,如果有多个模块,那么只有第一个模块才能正常初始化代码,bootstrap方法就是通过js动态的去初始化多个模块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <script src="angular.min.js"></script> <script> var m1 = angular.module('myApp1',[]); var m2 = angular.module('myApp2',[]); m1.controller('Aaa',['$scope',function($scope){ $scope.name = 'hello'; }]); m2.controller('Bbb',['$scope',function($scope){ $scope.name = 'hi'; }]); document.onclick = function(){ var aDiv = document.getElementsByTagName('div'); angular.bootstrap(aDiv[0],['myApp1']); angular.bootstrap(aDiv[1],['myApp2']); }; </script> </head> <body> <div ng-controller="Aaa"> <p>{{name}}</p> </div> <div ng-controller="Bbb"> <p>{{name}}</p> </div> </body> </html> |
支付宝扫一扫打赏
微信扫一扫打赏