Page 311 - AngularJS权威教程
P. 311
20.5 事件相关的核心服务 291
这个过程通常涉及获取视图模板和解析route属性上所有依赖项的时候。 19
4. $routeChangeSuccess
在所有路由依赖项跟着 $routeChangeStart 被 解析之后, $routeChangeSuccess 被从 20
$rootScope上广播出来。
ngView指令使用$routeChangeSuccess事件来获悉何时实例化控制器并渲染视图。 21
5. $routeChangeError
22
如果路由对象上任意的resolve属性被拒绝了,$routeChangeError就会被触发(比如它们失
败了)。这个事件是从$rootScope上广播出来的。
23
6. $routeUpdate
如果$routeProvider上的reloadOnSearch属性被设置成false,并且使用了控制器的同一个 24
实例,$routeUpdate事件会被从$rootScope上广播。
7. $destroy 25
在作用域被销毁之前, $destroy事件会在作用域上广播。这个顺序给子作用域一个机会,在
父作用域被真正移除之前清理自身。 26
例如,如果我们在控制器中有一个正在运行的$timeout,我们不希望在包含它的控制器已经
不存在的情况下,它还继续触发。 27
angular.module('myApp')
.controller('MainController', function($scope, $timeout) {
var timer; 28
var updateTime = function() {
$scope.date = new Date();
timer = $timeout(updateTime, 1000); 29
}
// 开始更新时间
timer = $timeout(updateTime, 1000); 30
// 在销毁控制器之前
// 清除定时器
$scope.$on('$destroy', function() { 31
if (timer) { $timeout.cancel(timer); }
});
});
32
33
34
35
36