繁体   English   中英

角$ routeProvider可覆盖的后备路由

[英]Angular $routeProvider override-able fallback routes

我正在创建我的第一个可观的角度项目,因此我选择将角度应用程序代码分解为以下目录:

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定义路由,以便它们可以被覆盖?

您可能可以采用此技术来动态加载Dan Wahlin所描述的控制器,此处http://weblogs.asp.net/dwahlin/dynamically-loading-controllers-and-views-with-angularjs-and-requirejs与默认值结合使用路由参数控制要加载哪个视图的位置。 您可以将同一页面参数传递给resolve函数,以控制要提供哪种视图和控制器组合?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM