【问题标题】:Angular route rules角度路由规则
【发布时间】:2016-04-20 16:43:59
【问题描述】:

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

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

www.mysite.com/{ 主页 |简介 |设置..} (这些是网站的通用页面)

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

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

如何添加如下规则:仅当 :personalLink 不等于“home”、“settings”等时才遵循此路线...?

【问题讨论】:

    标签: angularjs url routes


    【解决方案1】:

    如果你想使用$routeProvider,那么最好一一明确指定路由。规则会从上到下匹配,所以请将更明确的放在顶部,url :personalLink 的作用类似于“wild-chunk-match”,但不完全是wild-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
          }
    });
    

    如果你想在 url 路径中使用正则表达式模式,最好使用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*"
    });
    

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

    希望对你有帮助:)

    【讨论】:

    • 谢谢!这实际上解决了我的问题!我的 :personalLink 路线高于其他路线!
    猜你喜欢
    • 1970-01-01
    • 2021-08-04
    • 2018-10-23
    • 2019-03-31
    • 2018-06-14
    • 2015-06-13
    • 1970-01-01
    • 2013-02-15
    • 2016-04-07
    相关资源
    最近更新 更多