У меня очень странная ситуация с ui-router. У меня есть состояние, определенное так:
.state('profileQuestion', {
url: '/profile-questions/:profileQuestionId',
templateUrl: 'client/users/views/profile-question.ng.html',
controller: 'profileQuestionCtrl'
})
Он работает отлично и денди, когда я просматриваю приложение. Однако, если я перейду прямо к этой странице, например localhost:3000/profile-questions/1
, приложение не распознает страницу и сразу же попытается перейти на otherwise
маршрут.
$urlRouterProvider.otherwise('/login');
Что еще, на самом деле это относится к /profile-questions/login
вместо просто /login
! Контроллер для вопросов профиля никогда не вызывается. Таким образом, этот ui-маршрутизатор отлично работает, когда я перехожу к странице из другого, но не удается, когда я загружаю страницу самостоятельно. Я должен добавить, что если я удалю параметры параметров состояния :profileQuestionId
, маршрут /profile-questions
загрузится правильно. Есть идеи?
Как предположил @Radim Kohler и @Joe Lloyd, проблема в том, что режим HTML5 был включен. Теперь я вижу, что сервер думает, что я ищу что-то в каталоге /profile-questions/, которого нет. Чтобы исправить это, я просто изменил его как параметр строки запроса так:
.state('profileQuestion', {
url: '/profile-question?profileQuestionId',
templateUrl: 'client/users/views/profile-question.ng.html',
controller: 'profileQuestionCtrl'
})