AngularJS $routeProvider 按页面路由不同?

AngularJS $routeProvider routing differently by page?

我的构建过程连接了所有 JS,所以没有任何黑客攻击,有没有办法指定 $routerProvider 应该只在单个页面上使用,或者覆盖 $routeProvider 以响应页面合适的路线?

我有这个:

/app/page1#/many-things-go-here

/app/page2#/many-things-go-here

我希望这些路由的处理是分开的。我该怎么做?

编辑——下面是原始答案 最简单的方法是向每个页面添加一个脚本块以定义一个模块常量,然后在配置 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
   }
   ...
});

原始答案:

angular 方法是添加一个提供程序 (https://docs.angularjs.org/guide/providers),它允许您配置一个标志以确定是否应该使用 routerProvider ...假设您创建一个 RoutingProvider 与shouldUseRouterProvider 属性,然后在具有 routerProvider 特定逻辑的路由文件中,您可以注入提供程序并检查:

// inject RouterProvider

if (RouterProvider.shouldUseRouterProvider) {
    ... routerProvider configuration
}

如果您使用此方法,则在您的页面中,只需添加一个带有 module.config 部分的脚本块,用于设置该页面的配置,例如:

angular.module('app').config(['RouterProvider', function(RouterProvider) {
    RouterProvider.shouldUseRouterProvider = false;
}]);

最简单的做法是在每个页面的脚本块中设置一个全局变量,并在设置 routerProvider 的 angular 相关代码中检查它。