我正在创建我的第一个相当大的角度项目,因此我选择将我的角度应用程序代码分解为这样的目录:
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
中定义路由以便它们可以覆盖?
答案 0 :(得分:0)
您可以调整此技术,以便动态加载Dan Wahlin在http://weblogs.asp.net/dwahlin/dynamically-loading-controllers-and-views-with-angularjs-and-requirejs描述的控制器,并结合您的默认路由,其中参数控制要加载的视图。您可以将相同的页面参数传递给resolve函数来控制要提供的视图和控制器的组合吗?