Page 127 - AngularJS权威教程
P. 127
12.6 更多关于路由的内容 107
原始的AngularJS evt对象; 1
用户当前所处的路由;
上一个路由(如果当前是第一个路由,则为undefined)。
2
3. $routeChangeError
AngularJS会在任何一个promise被拒绝或者失败时广播$routeChangeError事件。 3
angular.module('myApp', [])
.run(function($rootScope, $location) {
$rootScope.$on('$routeChangeError', function(current, previous, rejection) { 4
});
});
5
$routeChangeError事件有三个参数:
当前路由的信息;
上一个路由的信息; 6
被拒绝的promise的错误信息。
7
4. $routeUpdate
AngularJS在reloadOnSearch属性被设置为false的情况下,重新使用某个控制器的实例时,
会广播$routeUpdate事件。 8
12.5.3 关于搜索引擎索引 9
Web爬虫对于JavaScript的胖客户端应用无能为力。为了在应用的运行过程中给爬虫提供支 10
持,我们需要在头部添加meta标签。这个元标记会让爬虫请求一个带有空的转义片段参数的链接,
服务器根据请求返回对应的HTML代码片段。
11
<meta name="fragment" content="!"/>
12.6 更多关于路由的内容 12
13
12.6.1 页面重新加载
$location服务不会重新加载整个页面,它只会单纯地改变URL。如果我们想重新加载整个 14
页面,需要用$window服务来设置地址。
$window.location.href = "/reload/page"; 15
12.6.2 异步的地址变化 16
如果我们想要在作用域的生命周期外使用$location服务,必须用$apply函数将变化抛到
应用外部。因为$location服务是基于$digest来驱动浏览器的地址变化,以使路由事件正常工 17
作的。
18