【发布时间】:2014-07-16 17:14:49
【问题描述】:
我正在创建我的第一个大型 Angular 项目,因此我选择将我的 Angular 应用程序代码分解为如下目录:
app/
calendar/
calendar.js
contacts/
contacts.js
companies/
companies.js
...
app.js
这些目录中的每一个都将包含一些用于视图 (.html)、指令、服务等的文件。
在我的app.js 文件中,我想设置可能有 80% 的时间使用的默认路由,如下所示:
$routeProvider
.when('/:page', {
templateUrl: function($routeParams) {
return 'app/' + $routeParams.page + '/index.html';
},
controller: 'PageController'
})
但是,我希望能够从我的模块中“覆盖”该路由,以便我可以执行诸如换出控制器、执行依赖注入等操作。我希望模块本身包含的那种逻辑来保持......嗯......模块化,所以我宁愿不在app.js 中定义每个模块的路由逻辑。例如,在我的app/calendar/calendar.js 文件中我想说:
$routeProvider
.when('/calendar', {
templateUrl: 'app/calendar/index.html',
controller: 'CalendarIndexController',
resolve: { ... }
})
问题是app.js 中的定义首先与位置匹配,因此从不使用此日历路线。
为了实现这一点,现在我只是在我的所有模块 javascript 文件之后包含一个额外的文件,它最后设置了我的后备路由,但这似乎有点笨拙。无论如何要在app.js 中定义路由,以便它们可以覆盖?
【问题讨论】:
-
可能需要考虑使用ui-router
-
@Divey 你有想过这个吗?
-
@ChrisMoutray 在定义了所有其他路由之后,我只是通过最后定义我的后备路由来处理它。最终我硬着头皮将整个应用程序切换为使用 ui-router。一开始有点痛苦,但从长远来看是值得的。
标签: javascript angularjs route-provider