2

我正在创建我的第一个大型 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: { ... }
    })

问题是 in 中的定义app.js首先与位置匹配,因此从不使用此日历路线。

为了实现这一点,现在我只是在我的所有模块 javascript 文件之后包含一个额外的文件,它最后设置了我的后备路由,但这似乎有点笨拙。无论如何要定义其中的路线,app.js以便它们可以覆盖?

4

1 回答 1

0

您可能可以将此技术用于动态加载 Dan Wahlin 描述的控制器http://weblogs.asp.net/dwahlin/dynamically-loading-controllers-and-views-with-angularjs-and-requirejs 结合您的默认值参数控制要加载哪个视图的路由。您可以将相同的页面参数传递给解析函数来控制视图和控制器的组合来提供服务吗?

于 2014-07-16T19:23:51.357 回答