2016-03-17 2 views
1

В настоящее время я работаю на сайте с нескольких вложенных маршрутов, и я хотел бы создать простой URL для профилей пользователей, например:Как предотвратить переопределение параметра ui-router?

mydomain.com/someusername 

Но с моей текущей конфигурации состояния UI-маршрутизатор, он переопределяет все мои другие URL-адреса, я думаю, потому что он рассматривает другие маршруты как параметр.

.state('profile', { 
    url: '/{username}', 
    template: '...', 
    controller: '...', 
}) 
.state('other', { 
    url: '/other', 
    template: '...', 
    controller: '...', 
}); 

(Как и в этом примере, «другое» состояние будет рассматриваться в качестве параметра в профиле состоянии)

Я также попытался подклассов его от корня состояния, но это не сработало или. Я могу обойти проблему, используя дополнительное ключевое слово перед именами пользователей (например: mydomain.com/user/someusername), но это немного сложнее с точки зрения пользователя.

Есть ли способ сделать это, как я пытаюсь?

ответ

1

Порядок определения состояния важен .. просто переключить их

// more specific 
.state('other', { 
    url: '/other', 
    template: '...', 
    controller: '...', 
}) 
// more general 
.state('profile', { 
    url: '/{username}', 
    template: '...', 
    controller: '...', 
}) 

UI-маршрутизатор добавляющих состояний в очередь, а затем перебирает его, чтобы найти соответствие. Так что если общие - последние .. более конкретные будут найдены правильно

+0

Ах, хорошо, я просто понял это после публикации вопроса :) В любом случае, спасибо большое, я буду принимать ответ, как только смогу. – Endanke

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