0

我遇到了一些我无法解释的行为,但我相信其他人可以。我正在像这样设置我的应用程序模块:

var appmodule = angular.module('appmodule', ['ui']).config(
['$routeProvider', function($routeProvider) {
    $routeProvider.
      when('/dashboard', {
        templateUrl: 'partials/dashboard.html', 
        controller: dashCtr,
        layer: 'main'
      }).
      when('/:campaignId/edit', {
        templateUrl: 'partials/edit.html',
        controller: campaignCtr,
        layer: 'layer1'
      }).
      when('/:campaignId', {
        templateUrl: 'partials/campaign_info.html',
        controller: campaignCtr,
        layer: 'layer1'
      }).
      when('/inbox', {
        templateUrl: 'partials/inbox.html',
        controller: inboxCtr,
        layer: 'main'
      }).
      otherwise({redirectTo: '/dashboard'});
}]);

当我导航到 app.com/:campaignId 或 app.com/:campaignId/edit 时,一切正常,但如果我尝试 app.com/inbox(或其他任何内容),我会被重定向回 /dashboard。我在其他几个地方读过 URL 不能以变量开头,但我对这个概念很陌生(通常只是前端的设计方面)并且不明白为什么。

谢谢。

4

1 回答 1

2

好吧,这仅仅是因为inbox路线低于 ''/:campaignId' 路线。Angular 按照定义的顺序检查规则,并且 ''/:campaignId' 规则匹配每个 url,因此没有机会进入 'inbox' 路由。

只需在所有其他路线之后定义“/:campaign”路线,一切都应该正常工作。

于 2013-04-13T18:47:35.833 回答