AngularJS $ routeProvider以不同方式按页面路由?

时间:2015-07-29 18:18:13

标签: javascript angularjs ngroute angularjs-ng-route

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

我有这个:

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

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

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

1 个答案:

答案 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的角度相关代码中检查它。