2016-04-20 2 views
0

У меня есть приложение AngularJS. У меня есть два основных вида маршрутов:Угловые правила маршрута

www.mysite.com/ {user1 | user2 | user3 ...} (это те пользователи персональных страниц)

и

www.mysite.com/ {дом | профиль | настройки ..} (эти общие страницы для веб-сайта)

Проблема в том, что когда я перехожу, например: www.mysite.com/home, «home» распознается как имя пользователя, и я получаю ошибку неустойчивого пользователя. Сейчас этот маршрут реализуется так:

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

Как я могу добавить правило как: следовать по этому пути только если: personalLink не равно «Настройки» «дом», и т.д ...?

ответ

0

Если вы хотите использовать $routeProvider, то лучше явно указывать маршруты по одному. Правило будет соответствовать сверху вниз, поэтому, пожалуйста, поставить более явный один на вершине, URL :personalLink работает как «дикий чанка-матч», но не совсем дикий матч:

$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*" 
}); 

узор регулярное выражение может быть изменен на основе ваших требований, один в коде только для демонстрации.

Надеюсь, это может вам помочь :)

+0

Спасибо! Это фактически решило мою проблему! У меня был: personalLink маршрут выше остальных! – ste

Смежные вопросы