我的构建过程连接所有JS,所以没有任何黑客攻击,有没有办法指定$routerProvider
只应在单个页面上使用,或覆盖$routeProvider
以响应页面适当的路由?
我有这个:
/app/page1#/many-things-go-here
和/app/page2#/many-things-go-here
我希望这些路线的处理是分开的。我该怎么做?
答案 0 :(得分:0)
编辑 - 以下原始答案 最简单的方法是向每个页面添加一个脚本块来定义一个模块常量,然后在配置routeProvider的配置部分中检查该常量。
示例:
// page1.html
angular.module('app').constant('SHOULD_USE_ROUTE_PROVIDER', false);
// page2.html
angular.module('app').constant('SHOULD_USE_ROUTE_PROVIDER', true);
// module config section
angular.module('app').config(function(..., SHOULD_USE_ROUTE_PROVIDER) {
...
if (SHOULD_USE_ROUTE_PROVIDER) {
// configure it here
}
...
});
原始回答:
角度方式是添加一个提供程序(https://docs.angularjs.org/guide/providers),它允许你配置一个标志来确定是否应该使用routerProvider ...假设你创建一个带有shouldUseRouterProvider属性的RoutingProvider,然后在你的路由文件具有routerProvider特定逻辑,您可以注入提供程序并检查:
// inject RouterProvider
if (RouterProvider.shouldUseRouterProvider) {
... routerProvider configuration
}
如果您使用此方法,那么在您的页面中,只需添加一个带有module.config部分的脚本块,该部分设置该页面的配置,如:
angular.module('app').config(['RouterProvider', function(RouterProvider) {
RouterProvider.shouldUseRouterProvider = false;
}]);
这样做的hacky方法是在每个页面的脚本块中设置一个全局变量,并在设置routerProvider的角度相关代码中检查它。