AngularJS中的分布式路由定义

时间:2013-07-28 06:52:10

标签: angularjs routes requirejs route-provider

我通常知道AngularJS中的路由定义如下:

var app = angular.module('app', []);
app.config(function ($routeProvider) {
$routeProvider.when("/", { templateUrl: "/partials/home.html" }).
               when("/profile", { templateUrl: "/partials/profile.html" }).
               when("/contact", { templateUrl: "/partials/contact.html" }).
               otherwise({ redirectTo: '/' });
});

让我烦恼的是我想使用RequireJS模块化我的应用程序,并且我想在需要它们的地方注册路线。例如,如果我有一个配置文件模块,我想从那里注册我的路由。同样适用于触点模块。这种集中化让我发疯。我在这里错过了一点,还是我的问题有什么好的解决方案?

2 个答案:

答案 0 :(得分:1)

您不必在一个地方完成$ routeProvider的配置。在需要时添加路由定义,即当您知道您将使用例如配置文件模块时,您可以添加与其路由对应的.when()子句。

答案 1 :(得分:1)

您只需在模块上分配路由配置即可。您必须做的唯一事情是,在“app”模块中注册所有模块。

angular.module('app', ['app.profile', 'app.contact'])
  .config(function ($routeProvider) {
    $routeProvider.when("/", { templateUrl: "/partials/home.html" })
                  .otherwise({ redirectTo: '/' });
  });

angular.module('app.profile', [])
  .config(function ($routeProvider) {
    $routeProvider.when("/profile", { templateUrl: "/partials/profile.html" });
  });

angular.module('app.contact', [])
  .config(function ($routeProvider) {
    $routeProvider.when("/contact", { templateUrl: "/partials/contact.html" });
  });