1

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

我有这个:

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

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

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

4

1 回答 1

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

于 2015-07-29T19:27:37.157 回答