我定义了多个路线,例如:
$routeProvider
.when('/:locale/pages/:id/edit', {
templateUrl: 'pages/index.html',
controller: 'PageEditController',
resolve: {
pages: ['pageService', function(pageService){
return pageService.readyPromise();
}],
locales: ['localeService', function(localeService){
return localeService.readyPromise();
}],
template: ['templateService', function(templateService){
return templateService.readyPromise();
}]
}
})
我确实需要解决所有这三个承诺,几乎每个网址都有。为每一条路线定义它是相当繁琐的......另外,当一个新服务出现时,到处都需要它,我必须用新的承诺修补所有路线。
我想为我的应用程序提供的内容,无论用户首先登陆的是什么网址,都是先预先加载所有数据然后显示正确的控制器,而不是为每个控制器指定。
答案 0 :(得分:0)
基本上你必须创建自己的$ routeProvider版本(只需扩展默认版本),然后扩展默认值。当最后一步是扩展路径参数的.resolve方法
像这样的东西
var basicResolves = ... // here your basic resolve functions
var myRouteProvider = angular.extend({}, $routeProvider, {
when: function(path, route) {
route.resolve = (route.resolve) ? route.resolve : {};
angular.extend(route.resolve, basicResolves);
$routeProvider.when(path, route);
return this;
}
});
您将使用myRouterProvider而不是默认的$ routeProvider
进行默认解析