角度路线规则

时间:2016-04-20 16:44:00

标签: angularjs url routes

我有一个AngularJS应用程序。我有两种主要的不同路线:

www.mysite.com/ {user1 | user2 | user3 ...} (这些是用户个人页面)

www.mysite.com/ {home |个人资料|设置..} (这些是网站的通用页面)

问题在于,当我访问时,例如:www.mysite.com/home,“home”被识别为用户名,我得到错误的不存在用户。现在,这条路线就是这样实现的:

      $routeProvider.when('/:personalLink/:invoiceUrl', {
          templateUrl: 'pay/pay.html',
          data: {
              needAuth: false
          }
      });

如何添加以下规则:仅在以下情况下遵循此路线:personalLink不等于“home”,“settings”等...?

1 个答案:

答案 0 :(得分:0)

如果您想使用$routeProvider,那么最好一个一个地明确指定路由。该规则将从上到下进行匹配,因此请将更明确的规则放在顶部,网址:personalLink的工作方式类似于#34; wild-chunk-match"但不完全匹配:

$routeProvider
.when('/home', {
      templateUrl: 'path/to/home_page'
})
.when('/settings', {
      templateUrl: 'path/to/setting_page'
})
.when('/profile', {
      templateUrl: 'path/to/profile_page'
})
.when('/:personalLink/:invoiceUrl', {
      templateUrl: 'pay/pay.html',
      data: {
          needAuth: false
      }
});

如果您想在网址路径中使用正则表达式模式,最好使用ur-router

$stateProvider.state("artists-index", {
    url: "/{page:[home|profile|setting]}",
    templateUrl: "/path/to/generic/home_page",
    controller: "*home_page_controller*"
});

$stateProvider.state("artists-index", {
    url: "/{page: user-[0-9a-zA-Z]+}",// it will match 'user-191' for an example
    templateUrl: "/path/to/generic/user_page",
    controller: "*user_page_controller*"
});

正则表达式模式可能会根据您的要求进行更改,代码中的那个仅用于演示。

希望这可以帮助你:)